【发布时间】:2020-10-23 05:22:12
【问题描述】:
正如我习惯于使用简单的 DataFrame 表一样,我想为具有多索引的表的索引添加一个名称。由于某种原因,原本可以正常工作的导入现在会引发错误。
我只想从保存 csv 时的 csv 中取回同一张表。
谁能指出我做错了什么,或者为什么这不能像我预期的那样工作?
如果它与 csv 有关,是否可以使用另一种基于文本的格式?
import numpy as np
import pandas as pd
# first example, everything works as expected
# df = pd.DataFrame(np.zeros((10, 4)), columns=['a','b','c','d'])
# second example, read_csv() throws error - bug?
df = pd.DataFrame(np.zeros((10, 4)),
columns=pd.MultiIndex.from_product([
['A', 'B'],
['x', 'y']
]))
df.index.name = 'idx'
print(df)
df.to_csv('test.csv')
df = pd.read_csv('test.csv', index_col='idx')
print(df)
【问题讨论】:
-
index不是你的MultiIndex... 这是你的专栏,所以df.index.name = 'idx'可能没有达到你的预期。pd.read_csv('test.csv', header=[0,1])能满足你的需要吗? -
@ChrisA 是的,我确实想将 columns 与 MultiIndex 一起使用,
df.index.name = 'idx'似乎确实命名了索引列(通常枚举 0,1,2, 3,4,...) 到idx,还是错了?我必须查一下这个header参数。 -
试试
pd.read_csv('test.csv', header=[0,1], index_col=0)
标签: python-3.x pandas indexing multi-index