【问题标题】:How can I assign a name to the 'intersection' of index and columns in a pandas dataframe?如何为 pandas 数据框中的索引和列的“交集”分配名称?
【发布时间】:2019-11-09 21:07:52
【问题描述】:

如果我创建一个数据框并从中生成一个数据透视表,它会在结果表的左上角“单元格”中不断出现一个字符串,如下所示。在这个例子中,它出现了字符串“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

【问题讨论】:

  • df3.index.name='n'
  • 不太一样。当您创建数据透视表并重置其索引时,它的左上角“单元格”中会出现一个字符串(在数据框中通常为空)。如何访问此值?

标签: python pandas indexing pivot-table rename


【解决方案1】:

我通过“水平”而不是“垂直”查看数据框得到了答案。我上面提到的“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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多