我有一个来自Dota中经过解析的匹配的数据帧,其中包含具有match_id,slot和文本列的聊天信息。每行代表一行文本。现在,我想对这些行进行分组,以使每个插槽(代表一个玩家)在值列表中分配所有文本。插槽是0到9之间的数字,所以我不希望将匹配编号5中的插槽0的文本与匹配编号1中的插槽0的文本分组在一起。我该怎么做?是否可以就地执行?还是必须从头开始创建新的数据框?
这是示例输入:
match_id,广告位,文本
0,0,“ gg”
0、2,“好游戏”
0、2,“表现出色”
1,0,“ glhf”
1,6,“ u2”
1,0,“ thx”
...,...,...
我想要的是将其总结为:
match_id,广告位,文本
0,0,“ gg”
0,2,{“好游戏”,“打得好”}
1,0,{“ glhf”,“ thx”}
1,6,“ u2”
...,...,...
我希望这可以使事情变得清晰
答案 0 :(得分:0)
使用此代码,
import pandas as pd
df = pd.DataFrame({'match_id' :[0,0,0,1,1,1] ,'slot': [0,2,2,0,6,0] ,'text': ['gg','good game','well played' ,'glff' , 'u2' , 'thx'] })
df.groupby(['match_id','slot'])['text'].apply(list).reset_index(name='text_list')
输出:
match_id slot text_list
0 0 0 [gg]
1 0 2 [game, well played]
2 1 0 [glff, thx]
3 1 6 [u2]