我一直在寻找小时。我有一个像这样的DataFrame:-
col1. col2. col3. col4
row1. a. p u 0
row2. b. q v 1
row3. a. r w 2
row4. d. s x 3
row5. b. t y 4
现在,我想按“ col1”的值对所有这些行进行分组,以便得到:-
col1. col2. col3. col4
row1. a. p r u w 0,2
row2. b. q t v y 1,4
row3. d. s x 3
现在我发现了一种
df.groupby('col1)['col2'].apply(' '.join())
将'col2'中的所有行按相同的'col1'分组的方法,但是我无法扩展上述命令,以便将所有列的所有行组合在一起以得到提及的输出较早。上面的DataFrame只是为了说明。实际的DataFrame包括大约100行和列,并且所有单元格都存储反馈,但col1除外,col1存储了对其进行反馈的项目的名称。我想基于相同的项目(col1),然后我将对DataFrame进行情感分析。
最佳答案
您可以使用:
df1 = df.astype(str).groupby('col1').agg(','.join).reset_index()
print (df1)
col1 col2 col3 col4
0 a. p,r u,w 0,2
1 b. q,t v,y 1,4
2 d. s x 3
如果需要还可以索引:
df1 = df.astype(str).groupby('col1').agg(','.join).reset_index()
df1.index = df.drop_duplicates('col1').index
print (df1)
col1 col2 col3 col4
row1. a. p,r u,w 0,2
row2. b. q,t v,y 1,4
row4. d. s x 3
说明:
首先通过
string
将所有列转换为astype
然后
groupby
并通过join
汇总agg
如果需要,还可以通过
col1
上的第一个值进行索引,添加drop_duplicates