为什么df.Loc似乎不能在循环中工作(键错误)



谁能告诉我为什么?Loc似乎不能在像这样的循环中工作


example_data = {
'ID': [1,2,3,4,5,6],
'score': [10,20,30,40,50,60]
}
example_data_df = pd.DataFrame(example_data)
for row in example_data_df:
print(example_data_df.loc[row,'ID'])

并引发错误"KeyError: 'ID'"?

在循环之外,这样做很好:

row = 1
print(example_data_df.loc[row,'ID']

我一直在尝试不同的版本,如example_data_df['ID']。Loc [row]并尝试查看问题是否与列中的对象类型有关,但没有任何作用。

提前感谢!

编辑:如果它起作用,这就是为什么我认为我需要使用循环:我有两个数据帧a和B,并且需要将某些列从B附加到a -然而,只有对于那些行,其中a和B在特定列中具有匹配值。B比A长,不是A中的所有行都包含在B中,我不知道如果没有循环,这是怎么可能的,这是我要单独问的另一个问题

如果在每一步中选中'row',您会注意到直接在DataFrame上迭代会产生列名.

你想:

for idx, row in example_data_df.iterrows():
print(example_data_df.loc[idx,'ID'])

,或者更好的:

for idx, row in example_data_df.iterrows():
print(row['ID'])

现在,我不知道为什么要手动遍历行,但知道这应该仅限于小数据集,因为这是使用DataFrame的最低效的方法。

最新更新