объединение строк с повторяющимися значениями столбцов - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть следующий фрейм данных:

              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 голосов
/ 27 сентября 2018

Что-то вроде

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

0 голосов
/ 27 сентября 2018

Вы можете использовать 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
0 голосов
/ 27 сентября 2018

Похоже на проблему 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...