我在 Pandas 中有一个数据框,relation_between_countries:
country_from country_to points
1 Albania Austria 10
2 Denmark Austria 5
3 Austria Albania 2
4 Greece Norway 4
5 Norway Greece 5
我试图找出关系点之间的区别,如下所示:
country_from_or_to country_to_or_from difference
Albania Austria 8
Denmark Austria
Greece Norway -1
你有什么想法吗?
请您参考如下方法:
cols = ['country_from','country_to']
#sort values in columns
df[cols] = df[cols].apply(sorted, axis=1)
#get difference
df['difference'] = df.groupby(cols)['points'].diff(-1)
print (df)
country_from country_to points difference
1 Albania Austria 10 8.0
2 Austria Denmark 5 NaN
3 Albania Austria 2 NaN
4 Greece Norway 4 -1.0
5 Greece Norway 5 NaN
也可以将 NaN 替换为空白,但在列中获取混合值 - 数字与字符串,因此某些函数可以返回奇怪的输出:
cols = ['country_from','country_to']
df[cols] = df[cols].apply(sorted, axis=1)
df['difference'] = df.groupby(cols)['points'].diff(-1).fillna('')
print (df)
country_from country_to points difference
1 Albania Austria 10 8
2 Austria Denmark 5
3 Albania Austria 2
4 Greece Norway 4 -1
5 Greece Norway 5
