Python 合并包含一些相同和不同列名的数据帧字典?
我有一个数据帧字典,如:Python 合并包含一些相同和不同列名的数据帧字典?,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,我有一个数据帧字典,如: {'A_all4': region A_all4_count total A_all4_percent 0 AP 0 40 0.0 1 ESA 0 21 0.0 2
{'A_all4': region A_all4_count total A_all4_percent
0 AP 0 40 0.0
1 ESA 0 21 0.0
2 CA 0 16 0.0
3 LA 0 33 0.0
4 NA 0 20 0.0
5 WA 0 25 0.0
6 EA 0 39 0.0,
'PA_all4': region PA_all4_count total PA_all4_percent
0 AP 0 40 0.0
1 ESA 0 21 0.0
2 CA 0 16 0.0
3 LA 0 33 0.0
4 NA 0 20 0.0
5 WA 0 25 0.0
6 EA 0 39 0.0,
'NA_all4': region NA_all4_count total NA_all4_percent
0 AP 0 40 0.0
1 SA 4 21 19.0
2 CA 1 16 6.2
3 LA 0 33 0.0
4 NA 2 20 10.0
5 WA 2 25 8.0
6 EA 0 39 0.0}
我想合并字典中所有不同的数据帧,这样我就有了一个最终的数据帧,它合并了所有不同的count和percent列,但只有一个region和total列
例如:
region total A_all4_count. A_all4_percent P_all4_count P_all4_perct NA_all4_count NA_all4_perc
AP 40 0 0.0 0 0.0 0 0
ESA 21 0 0.0 0 0.0 4 19.0
CA 16 0 0.0 0 0.0 1 6.2
LA 33. 0 0.0 0 0.0 0 0.0
NA 20 0. 0.0 0 0.0 2 10.0
等等
我试过使用
pd.concat(d, axis=1).sum(axis=1, level=0)
但这并不能满足我的要求。要连续进行
合并
,可以运行for循环或reduce
:
从functools导入reduce
结果=减少(lambda df_1,df_2:pd.merge(df_1,df_2),dict_of_dfs.values())
其中第一个参数是一个接受2个df并合并它们的函数。字典的值,即数据帧,是以这种方式减少的。您可以为列表中的3个数据帧定义所需的列,然后使用字典项为每个数据帧与所选列列表合并,如下所示: 假设数据帧的dict被称为
d
:
A_all4_col = ['region', 'total', 'A_all4_count', 'A_all4_percent']
PA_all4_col = ['PA_all4_count', 'PA_all4_percent']
NA_all4_col = ['NA_all4_count', 'NA_all4_percent']
pd.concat([d['A_all4'][A_all4_col],
d['PA_all4'][PA_all4_col],
d['NA_all4'][NA_all4_col]], axis=1)
结果:
region total A_all4_count A_all4_percent PA_all4_count PA_all4_percent NA_all4_count NA_all4_percent
0 AP 40 0 0.0 0 0.0 0 0.0
1 ESA 21 0 0.0 0 0.0 4 19.0
2 CA 16 0 0.0 0 0.0 1 6.2
3 LA 33 0 0.0 0 0.0 0 0.0
4 NaN 20 0 0.0 0 0.0 2 10.0
5 WA 25 0 0.0 0 0.0 2 8.0
6 EA 39 0 0.0 0 0.0 0 0.0
0 Globally 194 0 0.0 0 0.0 9 4.6