为什么在我的数据中调用transpose会将行的索引从多索引切换到平面索引?

2024-05-17 07:00:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV,看起来像这样:

name,location,sales,customer_count
john,fairfax,1000,400
jane,daly city,500,350
john,springfield,800,240
john,richmond,200,80
jane,san jose,300,90
george,albany,200,60
john,centreville,600,150

我一次遍历每行3条记录:

reader = pd.read_csv(input_csv_path, chunksize=3)

for row in reader:

我创建一个pivot_table并打印出它的索引:

pivot_table_row = row.pivot_table(index=['name', 'location'])
print(pivot_table_row.index)

MultiIndex(levels=[[u'jane', u'john'], [u'daly city', u'fairfax', u'springfield']],
           codes=[[0, 1, 1], [0, 1, 2]],
           names=[u'name', u'location'])

由于transposition将行转换为列,反之亦然,我希望新的索引被命名为janejohndaly cityfairfax,并带有levels=['name', 'location']。但情况似乎并非如此:

    transposed_pivot_table_row = pivot_table_row.T
    print(transposed_pivot_table_row.index)

Index([u'customer_count', u'sales'], dtype='object')

为什么索引从MultiIndex['name', 'location]变为Index['customer_count', 'sales']平面


Tags: namecityindexcounttablelocationcustomerjohn
1条回答
网友
1楼 · 发布于 2024-05-17 07:00:09

原始的MultiIndex整体成为列。转置(customer_countsales)之前中剩余的列成为新的索引,没有名称

当您检查pivot_table_row.index.namespivot_table_row.columns.names属性时,您将看到:

    pivot_table_row = df.pivot_table(index=['name', 'location'])
    print(pivot_table_row.index.names)
    ['name', 'location']

    print(pivot_table_row.columns.names)
    [None]

    pivot_table_row = df.pivot_table(index=['name', 'location']).T
    print(pivot_table_row.index.names)
    [None]

    print(pivot_table_row.columns.names)
    ['name', 'location']

如您所见,原始列没有名称开头。一旦发生换位,列就成为索引,因此没有名称。因此在您的示例中,其余的列customer_countsales共同构成了新索引,没有名称

相关问题 更多 >