Skip to main content
 首页 » 编程设计

python之获取关系之间的差异

2025年05月04日24sharpest

我在 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 

你有什么想法吗?

请您参考如下方法:

使用DataFrameGroupBy.diff :

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