将数据框中的值转换为列表

时间:2019-12-14 13:31:08

标签: python-3.x pandas dataframe

我有一个来自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”
...,...,...

我希望这可以使事情变得清晰

1 个答案:

答案 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]