告诉我如何对名称唯一的列求和?
还有df1_df2
df1 = pd.DataFrame(data={'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8], 'C': [9, 10, 11, 12], 'D': [13, 14, 15, 16], 'E': [17, 18, 19, 20], 'F': [21, 22, 23, 24], 'G': [25, 26, 27, 28], 'H': [29, 30, 31, 32], 'L': [33, 34, 35, 36], 'K': [37, 38, 39, 40], 'M': [41, 42, 43, 44], 'P': [45, 46, 47, 48]})
df2 = pd.DataFrame(data={'A': [254, 223, 335,222], 'B': [545, 667, 743, 856], 'D': [986, 104, 113, 124], 'E': [137, 149, 165, 176]})
在这一步,df1我花费了列的总和,df_summ一切都很好。
my_list=[(pd.Series(df1.loc[:,list(i)].sum(axis=1), name='_'.join(df1.loc[:,list(i)].columns))) for i in list(itertools.combinations(df1.columns,2))]
df_summ=pd.concat(my_list,axis=1)
print(df_summ)
A_B A_C A_D A_E A_F A_G A_H ... H_P L_K L_M L_P K_M K_P M_P
0 6 10 14 18 22 26 30 ... 74 70 74 78 78 82 86
1 8 12 16 20 24 28 32 ... 76 72 76 80 80 84 88
2 10 14 18 22 26 30 34 ... 78 74 78 82 82 86 90
3 12 16 20 24 28 32 36 ... 80 76 80 84 84 88 92
[4 rows x 66 columns]
这里的问题是如何总结df_summ和df2,以便总结独特的列。似乎itertools.product可以应用此功能。
它应该大致如下所示:
A_B+D A_C+D A_D+B A_E+B A_F+B A_G+B A_H+B
0 992 996 559 563 567 571 575
1 112 116 683 687 691 695 699
2 123 127 761 765 769 773 777
3 136 140 876 880 884 888 892
如果我理解正确,您可以这样做:
最初的:
我们立即得到两个框架共有的列列表,连接并制作漂亮的列名:
获取资源:
更新
如果你需要得到一个中间帧df_summ,那么你可以这样做:
因此,df_summ 将变成:
然后你必须围起这样一个花园:
好吧,分别是: