我在csv中有一个DataFrame:
col1 col2 col3 col4 col5
0 A 1,5 2,5 3,5
1 B C 3,5 4,5 5,5
2 D 6,5 7,5 8,5
3 B E 9,5 10,5 11,5
并使用:
df1 = df.stack().to_frame()
m = df1[0].groupby(level=0).apply(lambda x :x.str.isalpha().ne(1).cumsum())
df2 = df1.groupby([df1.index.get_level_values(0),m]).sum().unstack().add_prefix('col_')
df2.reset_index(0).reset_index(drop=True)
df2.columns = [col[1] for col in df2.columns]
df2.set_index('col_1', inplace=True)
我得到了:
col_0 col_1 col_2 col_3
0 A 1,5 2,5 3,5
1 BC 3,5 4,5 5,5
2 D 6,5 7,5 8,5
3 BE 9,5 10,5 11,5
我希望得到:
col_0 col_1 col_2 col_3
0 A 1,5 2,5 3,5
1 B,C 3,5 4,5 5,5
2 D 6,5 7,5 8,5
3 B,E 9,5 10,5 11,5
在实际数据中,A,B,C,D,E都是单词,所以我需要使用逗号分隔符。 你有一些想法怎么做?
答案 0 :(得分:2)
您需要按[0]
选择列,然后apply
选择join
:
df2 = (df1[0].groupby([df1.index.get_level_values(0),m])
.apply(','.join)
.unstack()
.add_prefix('col_')
.rename_axis(None, 1))
print (df2)
col_0 col_1 col_2 col_3
0 A 1,5 2,5 3,5
1 B,C 3,5 4,5 5,5
2 D 6,5 7,5 8,5
3 B,E 9,5 10,5 11,5