2列之间相应最大差值的索引值

时间:2018-03-29 14:40:23

标签: python pandas dataframe

有一个csv文件,其中包含每个国家(数据框中的索引)赢得的国家/地区列表和相应的夏季和冬季金牌。像这样的东西 -

               Gold     Gold.1
Algeria           5          0
Armenia           8          1

以下是我正在使用的代码:

def Max_Diff():
    Gold_Diff = []
    Diff = 0
    for row in df.iterrows():
        Diff = df['Gold'] - df['Gold.1']
    Gold_Diff.append(Diff)
    return max(Gold_Diff)`enter code here`

Max_Diff()

等等。 “金牌”是夏季赢得的金牌,“金牌1”是冬季赢得的金牌。

我需要找到黄金(夏季)和黄金(冬季)数量之间存在最大差异的国家/地区。我的代码是,首先迭代数据帧中的所有行,并附加一个由国家和相应差异组成的列表。然后在列表中应用max函数以获取具有最大差异的国家/地区的值

但是上面的代码按原样呈现整个列表,而不是一个值。

此外,在此方法之前,我尝试使用pd.Series(Gold_Diff)将此列表转换为系列。但转换没有正确发生,输出是这样的 -

阿尔及利亚5 阿尔梅尼..... dtype:object

转换为系列背后的想法是在系列转换后使用idxmax函数,并获得系列中最大差值的索引值(国家/地区名称)。

1 个答案:

答案 0 :(得分:0)

您可以使用

获取列之间的差异
df['Gold'] - df['Gold.1']

如果您对绝对差异感兴趣,请使用

abs(df['Gold'] - df['Gold.1'])

上面的代码返回一个pandas系列。您可以使用idxmax()

获取差异最大的国家/地区的名称
(abs(df['Gold'] - df['Gold.1'])).idxmax()