Индекс выходит за границы при использовании .pivot - PullRequest
0 голосов
/ 03 января 2019

У меня есть кадр данных с размером (2481430, 2), и я хочу сгруппировать по столбцам B без суммирования для кодекса столбца.

Я использовал .pivot, и он вернул 'index 2025068794 выходит за пределы оси 0 с размером 2024681638'

   codex    B
0  D0003    20
1  D0004    21
2  D0003    21
3  D0001    20
4  D0002    20
5  D0005    20


df.pivot(columns = 'B', values = 'codex')

Это ожидаемый результат

   20       21
0  D0003    D0004
1  D0001    D0003
2  D0002    NaN
3  D0005    NaN

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Используйте pandas.pivot с cumcount для новых индексов:

df = pd.pivot(columns = df['B'], values = df['codex'], index= df.groupby('B').cumcount())
print (df)
B     20     21
0  D0003  D0004
1  D0001  D0003
2  D0002    NaN
3  D0005    NaN
0 голосов
/ 03 января 2019

groupby + pd.concat

Вы можете использовать groupby, затем объединить pd.Series объектов с нормализованными индексами:

grouper = df.groupby('B')['codex']
res = pd.concat((pd.Series(vals.values, name=b) for b, vals in grouper), axis=1)

print(res)

      20     21
0  D0003  D0004
1  D0001  D0003
2  D0002    NaN
3  D0005    NaN
...