如何在DataFrame中使用另一列中的值减去一列中的值?

时间:2016-11-10 02:12:55

标签: python pandas numpy

我有以下数据框:

enter image description here

我想看看哪个国家/地区与#34; Gold"和" Gold 1"。该指数目前是各国。

作为一个例子,对于阿富汗,它将是0-0 = 0.我对每个国家这样做,而且该列表中的最高数字是我的回答。这就是我想我想做的事情。

有谁知道我怎么能这样做?或者是否有内置函数可以计算出来?

3 个答案:

答案 0 :(得分:0)

您可以使用内置向量减法减去这两列:

df1['Gold'] - df2['Gold 1']

答案 1 :(得分:0)

差异最大的国家是

df.Gold.sub(df['Gold 1']).idxmax()

最大的绝对差异

df.Gold.sub(df['Gold 1']).abs().idxmax()

您也可以按差异

对此进行排序
df.loc[df.Gold.sub(df['Gold 1']).sort_values().index]

或绝对差异

df.loc[df.Gold.sub(df['Gold 1']).abs().sort_values().index]

答案 2 :(得分:0)

你可以试试下面的代码:

import pandas as pd
df = pd.DataFrame([['Afgh',0,0],['Agnt',18,0]], columns = ['Country','Gold','Gold1'])
df['GoldDiff'] = df['Gold'] - df['Gold1']
df.sort_values(by = 'GoldDiff', ascending = False)

df只是基于您的测试数据框。 df['GoldDiff']会创建一个新列来存储差异。

然后,您可以使用pandas中的sort_values函数对值进行排序。如果要将数据框修改为已排序的数据框,也可以添加选项inplace = True