为了账号安全,请及时绑定邮箱和手机立即绑定

通过字典定义 DataFrame 索引

通过字典定义 DataFrame 索引

慕尼黑8549860 2023-04-18 17:40:54
我正在设置一个空的 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)


查看完整回答
反对 回复 2023-04-18
  • 1 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信