通过字典定义 DataFrame 索引

我正在设置一个空的 DataFrame,我想稍后填充它。我提供了一个列表作为索引并想给它起一个名字,因为我想稍后将 df 推送到数据库。我知道我可以通过如此准确地解决该任务来更改名称,这df.index.name不是这里的问题。我解决这个问题的直觉是将索引作为字典提供,名称作为键,索引列表作为值。我将提供一个例子来澄清我的困惑:


import pandas as pd


COLS = ['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 Date

0  NaN  NaN

1  NaN  NaN

3  NaN  NaN

4  NaN  NaN

5  NaN  NaN


   Name Date

Id  NaN  NaN

虽然df1正确显示了所有索引,但它并没有(显然——因为我没有定义任何东西)显示索引的标题——到目前为止是预期的。查看df2它确实正确显示了索引的标题,但不显示索引。为什么?以及如何去做?


我的预期结果是:


  Name Date

Id

0  NaN  NaN

1  NaN  NaN

3  NaN  NaN

4  NaN  NaN

5  NaN  NaN

PS 再一次,我知道我可以打电话df1.index.name = 'Id',但是有没有办法一口气做到这一点?


慕尼黑8549860
浏览 82回答 1
1回答

沧海一幻觉

对于“为什么? ”仅仅是因为 pandas 在使用索引数组初始化数据框时不支持设置索引名称。对于“怎么做? ”您可以从字典中创建一个 pandas Index 对象IDX并使用它来初始化数据框import pandas as pdCOLS = ['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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python