【发布时间】:2021-11-21 21:01:13
【问题描述】:
我有两个数据框 df1 和 df2 具有相同的列集。我将 2 个 dfs 合并在一起并想要
- 计算 score1 和 score2 的分数差异
- 查看区域列是否相同。
希望的结果是 df_final 中包含“score1_diff”、“socre2_diff”和“regional_diff”(如附图所示)。我使用下面显示的代码在 df_final 中创建了 'score1_diff'、'score2_diff' 和 'regional_diff' 列。
但是,在我读取的数据框中,我有超过 30 多个分数列和 10 多个区域列,不时会有更多的分数列和区域列添加到数据框中。除了一一创建这些列之外,还有什么是实现相同结果的有效或动态方法?
import pandas as pd
pd.set_option('display.max_columns', None)
df1 = { 'Name':['George','Andrea','micheal','Ann',
'maggie','Ravi','Xien','Jalpa'],
'region':['a','a','a','a','b','b','b','b'],
'score1':[63,42,55,70,38,77,86,99],
'score2':[45,74,44,89,69,49,72,98]}
df2 = { 'Name':['George','Andrea','micheal', 'Matt',
'maggie','Ravi','Xien','Jalpa'],
'region':['a','b','a','a','a','b','b','a'],
'score1':[62,47,55,74,32,77,86,77],
'score2':[45,78,44,89,66,49,72,73]}
df1=pd.DataFrame(df1)
df2=pd.DataFrame(df2)
df_all = pd.merge(df1,df2,how='outer',indicator=True, on='Name',suffixes=('_df1','_df2'))
df_final=df_all.copy()
df_final['score1_diff']=df_final['score1_df1']-df_final['score1_df2']
df_final['score2_diff']=df_final['score2_df1']-df_final['score2_df2']
df_final['regional_diff']=df_final['region_df1']==df_final['region_df2']
【问题讨论】:
标签: python python-3.x pandas