我的df有以下列
ID Number Name
11 ccc-456 dfg
45 ggt-56 ggg
33 67889 ttt
当我创建一个新的数据帧时(需要它来与另一个数据帧合并)
df2 = df[['ID', 'Number']]
我收到一条错误消息,说ID不在索引中。但是当我打印(df)时,我确实看到了ID列。
当我运行索引时df3 = df.iloc[:, 0]
我在结果中看到前两列ID和Number
ID
24 32666
188 33432
401 34341
448 34490
510 34713
...
14062 108789
14204 110710
14651 116332
14678 116733
14726 117600
Name: NUMBER, Length: 28149, dtype: int64
为什么我可以访问ID列?
您的问题:
根据所提供的信息;ID";列设置为数据帧索引。
如果您运行此测试代码,您将得到与您描述的相同的错误。
test_dict = {
'ID': [11,45,33],
'Number': ['ccc-456','ggt-56','67889'],
'Name': ['dfg','ggg','ttt']
}
df = pd.DataFrame(test_dict).set_index('ID')
df2 = df[['ID', 'Number']]
解决方案
最简单的解决方案是在创建df2之前执行df.reset_index(inplace = True)
。这将给你";ID";作为列,以便您可以根据需要使用df2 = df[['ID', 'Number']]
引用它