我有一个带有GoldGold.1列的DataFrame。我想找到这两列之差最大的行。

对于以下DataFrame,这应该返回第6行。

df
Out:
   Gold  Gold.1
0     2       1
1     1       4
2     6       9
3     4       4
4     4       8
5     5       5
6     5       2 ---> The difference is maximum (3)
7     5       9
8     5       3
9     5       6

我尝试使用以下内容:
df.where(max(df['Gold']-df['Gold.1']))

但是,这引发了ValueError:

df.where(max(df ['Gold']-df ['Gold.1']))
追溯(最近一次通话):

文件“”,第1行,在
df.where(max(df ['Gold']-df ['Gold.1']))

文件“../python3.5/site-packages/pandas/core/generic.py”,第5195行,其中
引发错误)

_where中的文件“../python3.5/site-packages/pandas/core/generic.py”,行4936
引发ValueError('条件数组必须与'

ValueError:数组条件的形状必须与self相同

如何找到满足此条件的行?

最佳答案

可以使用.where代替.idxmax:

(df['Gold'] - df['Gold.1']).idxmax()
Out: 6

这将返回差异最大的索引。

如果要查找具有最大绝对差的行,则可以先调用.abs()
(df['Gold'] - df['Gold.1']).abs().idxmax()
Out: 4

关于python - 查找两列之间最大差异的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40952450/

10-14 17:41
查看更多