Yoh*_*oth 3 python indexing assign pandas
我不明白为什么会这样
df[(df['Gold']>0) & (df['Gold.1']>0)].loc[((df['Gold'] - df['Gold.1'])/(df['Gold'])).abs().idxmax()]
Run Code Online (Sandbox Code Playgroud)
但是当我分开时(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()]
Run Code Online (Sandbox Code Playgroud)
我不明白自从我开始学习Python和Pandas以来发生了什么.我需要了解发生这种情况的原因以及如何解决这个问题.
错误
KeyError:'标签[阿尔及利亚]不在[索引]中
你的问题是boolean indexing:
df[(df['Gold']>0) & (df['Gold.1']>0)]
Run Code Online (Sandbox Code Playgroud)
返回一个过滤后的DataFrame,它不包含您使用此值计算index的max值Series:
((df['Gold'] - df['Gold.1'])/(df['Gold'] + df['Gold.1'] + df['Gold.2'])).abs().idxmax()
Run Code Online (Sandbox Code Playgroud)
在你的数据中Algeria.
所以loc逻辑上抛出一个KeyError.
一个可能的解决办法是赋予新的过滤DataFrame来df1,然后得到相应的最大值的指数Series使用idxmax:
df1 = df[(df['Gold']>0) & (df['Gold.1']>0)]
df2 = df1.loc[((df1['Gold']-df1['Gold.1'])/(df1['Gold']+df1['Gold.1']+df1['Gold.2'])).abs().idxmax()]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10719 次 |
| 最近记录: |