我的目做每一個動作。DataFramedf有幾列,但我只想將該函數(shù)應(yīng)用于標(biāo)題為“條目”的列,該列包含在線撲克桌上發(fā)生的所有操作的日志(列中的每一行都是一個字符串)。這是“條目”列的樣子(每行都是一個字符串):-- ending hand #174 --"Prof @ ZY_G_5ZOve" gained 100"tom_thumb @ g1PBaozt7k" folds"Prof @ ZY_G_5ZOve" calls with 50"tom_thumb @ g1PBaozt7k" checksriver: 9a?|, 5a?£, Qa?¥, 7a? [Ka? ]"Prof @ ZY_G_5ZOve" checks"tom_thumb @ g1PBaozt7k" checksturn: 9a?|, 5a?£, Qa?¥ [7a? ]"Prof @ ZY_G_5ZOve" checks"tom_thumb @ g1PBaozt7k" checksflop: [9a?|, 5a?£, Qa?¥]"Prof @ ZY_G_5ZOve" checks"tom_thumb @ g1PBaozt7k" calls with 50"Bob T. @ fjZTXUGV2G" folds"danny G @ tNE1_lEFYv" folds"Prof @ ZY_G_5ZOve" posts a big blind of 50"tom_thumb @ g1PBaozt7k" posts a small blind of 25-- starting hand #174 (Texas Hold'em) (dealer: "Bob T. @ fjZTXUGV2G") ---- ending hand #173 --"tom_thumb @ g1PBaozt7k" gained 475"danny G @ tNE1_lEFYv" folds"Prof @ ZY_G_5ZOve" folds"tom_thumb @ g1PBaozt7k" raises with 356flop: [4a?¥, Aa? , 6a? ]"danny G @ tNE1_lEFYv" calls with 150"Prof @ ZY_G_5ZOve" calls with 150"tom_thumb @ g1PBaozt7k" raises with 150"Bob T. @ fjZTXUGV2G" folds"danny G @ tNE1_lEFYv" calls with 50"Prof @ ZY_G_5ZOve" calls with 50"tom_thumb @ g1PBaozt7k" posts a big blind of 50"Bob T. @ fjZTXUGV2G" posts a small blind of 25-- starting hand #173 (Texas Hold'em) (dealer: "danny G @ tNE1_lEFYv") --這是我嘗試過的一些示例代碼:player_list = ['danny G', 'Jane', 'Prof', 'spn', 'tim', 'Bob T.', 'joon', 'tom_thumb']action_list = ['call', 'fold']def action_amount(df, player_list, action): for player in player_list: action_number =len(df[df['entry'].str.contains('(player).*(action)', regex=True)]) print(f'{player} {action}ed {action_number} times.')action_amount(df, player_list, 'call')值得注意的是,len(df[df['entry'].str.contains('(danny G).*(call)', regex=True)])返回正確的值(我正在使用正則表達式,因為我要查找的兩個詞在同一行中,中間有一堆不同的字符)。該問題似乎與嘗試將值循環(huán)到str.contains. 我如何遍歷列表并打印姓名以及該人執(zhí)行給定輸入操作的次數(shù)?理想情況下,我希望同時遍歷代碼頂部的兩個列表。
1 回答

慕碼人8056858
TA貢獻1803條經(jīng)驗 獲得超6個贊
這行得通嗎?
def action_amount(df, player_list, action_list):
for player in player_list:
for action in action_list:
pattern = f'{player}.*{action}'
matching_rows = df[df['entry'].str.contains(pattern, regex=True)]
action_number = len(matching_rows)
print(f'{player} {action}ed {action_number} times.')
action_amount(df, player_list, possible_actions)
添加回答
舉報
0/150
提交
取消