合并具有重复列值的行

时间:2018-09-27 16:35:31

标签: python pandas pandas-groupby

我有一个数据框,如下所示:

              data
    0          a
    1          a
    2          a
    3          a
    4          a 
    5          b
    6          b
    7          b
    8          b
    9          b

我想将a和b的重复值分组为单个行元素,如下所示:

         data
   0      a
          a
          a
          a
          a
    1     b
          b
          b
          b
          b

我该怎么做?我尝试了以下操作,但是将每个重复的值放在自己的列中

     df.groupby('data') 

3 个答案:

答案 0 :(得分:2)

似乎像一个pivot问题,但是由于缺少列(由cumcount创建)和索引(由factorize创建)列,因此很难弄清

pd.crosstab(pd.factorize(df.data)[0],df.groupby('data').cumcount(),df.data,aggfunc='sum')
Out[358]: 
col_0  0  1  2  3  4
row_0               
0      a  a  a  a  a
1      b  b  b  b  b

答案 1 :(得分:1)

类似

index = ((df['data'] != df['data'].shift()).cumsum() - 1).rename(columns= {'data':''})

df = df.set_index(index)

    data
0   a
0   a
0   a
0   a
0   a
1   b
1   b
1   b
1   b
1   b

答案 2 :(得分:1)

您可以使用pd.factorize,然后使用set_index

df = df.assign(key=pd.factorize(df['data'], sort=False)[0]).set_index('key')

print(df)

    data
key     
0      a
0      a
0      a
0      a
0      a
1      b
1      b
1      b
1      b
1      b