我正在设置一个空的 DataFrame,我想稍后填充它。我提供了一个列表作为索引并想给它起一个名字,因为我想稍后将 df 推送到数据库。我知道我可以通过如此准确地解决该任务来更改名称,这df.index.name不是这里的问题。我解决这个问题的直觉是将索引作为字典提供,名称作为键,索引列表作为值。我将提供一个例子来澄清我的困惑:import pandas as pdCOLS = ['Name','Date']IDX_ARR = [0,1,3,4,5]IDX = {'Id':IDX_ARR}df1 = pd.DataFrame(columns=COLS, index=IDX_ARR)df2 = pd.DataFrame(columns=COLS, index=IDX)print(df1)print(df2)作为回应,我得到: Name Date0 NaN NaN1 NaN NaN3 NaN NaN4 NaN NaN5 NaN NaN Name DateId NaN NaN虽然df1正确显示了所有索引,但它并没有(显然——因为我没有定义任何东西)显示索引的标题——到目前为止是预期的。查看df2它确实正确显示了索引的标题,但不显示索引。为什么?以及如何去做?我的预期结果是: Name DateId0 NaN NaN1 NaN NaN3 NaN NaN4 NaN NaN5 NaN NaNPS 再一次,我知道我可以打电话df1.index.name = 'Id',但是有没有办法一口气做到这一点?
1 回答
沧海一幻觉
TA贡献1824条经验 获得超5个赞
对于“为什么? ”
仅仅是因为 pandas 在使用索引数组初始化数据框时不支持设置索引名称。
对于“怎么做? ”
您可以从字典中创建一个 pandas Index 对象IDX并使用它来初始化数据框
import pandas as pd
COLS = ['Name','Date']
IDX_ARR = [0,1,3,4,5]
IDX = {'Id': IDX_ARR}
index_key = list(IDX.keys())[0]
index_values = IDX[index_key]
df2 = pd.DataFrame(columns=COLS, index=pd.Index(data = index_values, name = index_key))
print(df2)
添加回答
举报
0/150
提交
取消