Как я могу присвоить имя «пересечению» индекса и столбцов в кадре данных pandas? - PullRequest
0 голосов
/ 10 ноября 2019

Если я создаю фрейм данных, а затем генерирую из него сводную таблицу, он продолжает отображать строку в верхней левой «ячейке» результирующей таблицы, как показано ниже. В этом примере появляется строка «n»:

import pandas as pd
df = pd.DataFrame({'col1':['a','a','b','b','c','c'],
               'col2':['str_a1','str_a2','str_b1','str_b2','str_c1','str_c2']})
df2 = df.assign(n=df.groupby('col1').cumcount()).pivot(index='col1',columns='n',values='col2').reset_index()
df2

n col1       0       1
0    a  str_a1  str_a2
1    b  str_b1  str_b2
2    c  str_c1  str_c2

Если я создаю кадр данных, как показано ниже, он ничего не появляется. Как включить «n» в этот второй параметр и как удалить «n» из указанного выше варианта?

df3 = pd.DataFrame({'col1':['a','b','c'],
                '0':['str_a1','str_b1','str_c1'],
                '1':['srt_a2','str_b2','str_c2']})
df3

  col1       0       1
0    a  str_a1  srt_a2
1    b  str_b1  str_b2
2    c  str_c1  str_c2

1 Ответ

0 голосов
/ 10 ноября 2019

Я получил ответ, «посмотрев» на фрейм данных «по горизонтали» вместо «по вертикали». 'N', о котором я упоминал выше, не было именем индекса, как указывал splash58. Должен сказать, что раньше я так думал.

Чем я заметил, что 'n' находится в той же строке, что и имена других столбцов. Следовательно, это должно быть имя индекса столбцов.

На самом деле, если вы сделаете:

import pandas as pd
df = pd.DataFrame({'col1':['a','a','b','b','c','c'],
               'col2':['str_a1','str_a2','str_b1','str_b2','str_c1','str_c2']})
df2 = df.assign(n=df.groupby('col1').cumcount()).pivot(index='col1',columns='n',values='col2').reset_index()
print(df2)

, вы получите:

n col1       0       1
0    a  str_a1  str_a2
1    b  str_b1  str_b2
2    c  str_c1  str_c2

После этого, если высделать:

df2.columns.name

Вы получите:

'n'
...