用逗号分隔符

时间:2017-11-10 11:30:13

标签: python pandas numpy

我在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都是单词,所以我需要使用逗号分隔符。 你有一些想法怎么做?

1 个答案:

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