【发布时间】:2017-01-02 13:51:02
【问题描述】:
我不明白为什么会这样
df[(df['Gold']>0) & (df['Gold.1']>0)].loc[((df['Gold'] - df['Gold.1'])/(df['Gold'])).abs().idxmax()]
但是当我除以(df['Gold'] + df['Gold.1'] + df['Gold.2'])
它停止工作给我你可以在下面找到的错误。
有趣的是,以下行有效
df.loc[((df['Gold'] - df['Gold.1'])/(df['Gold'] + df['Gold.1'] + df['Gold.2'])).abs().idxmax()]
我不明白发生了什么,因为我刚开始学习 Python 和 Pandas。我需要了解发生这种情况的原因以及如何解决。
错误
KeyError: '标签 [Algeria] 不在 [index] 中'
【问题讨论】:
-
试试
print(df.index.tolist()),里面可能有空格。 -
@MaharajaX:以后请发布您的数据框的文本示例,以便我们可以使用它(或生成它的代码),而不是图片。例如,请参阅How to make good reproducible pandas examples。谢谢,祝你的课程好运;)
-
示例数据框没有太大帮助,因为所有国家/地区的冬季奖牌数 (
Gold.1,Silver.1,Bronze.1,Total.1)) 都为零。顺便说一下,为了清楚起见,我会将这些系列命名为Gold.S, Gold.W, Gold。 -
如果您向我们发布可重现的代码和数据集(或 URL),我们可以回复。这是一个很好的习语练习题。您的错误的原因是“多索引”,即
df[...][...]将导致 LHS 表达式为您提供一个副本,然后 RHS 表达式尝试处理/修改该副本,而不是直接在源 df 上工作。df.filter可能是更好的选择...
标签: python pandas indexing assign