对来自不同数据帧的列求和 Pandas
summing columns from different dataframes Pandas
我有 3 个 DataFrame,都有超过 100 行和 1000 列。我正在尝试将所有这些 DataFrame 合并为一个,以便汇总每个 DataFrame 的公共列。我知道有一种称为“pd.DataFrame.sum()”的求和方法,但请记住,我有超过 1000 列,我无法手动添加每个公共列。我附上了样本 DataFrame 和我想要的结果。帮助将不胜感激。
#Sample DataFrames.
df_1 = pd.DataFrame({'a':[1,2,3],'b':[2,1,0],'c':[1,3,5]})
df_2 = pd.DataFrame({'a':[1,1,0],'b':[2,1,4],'c':[1,0,2],'d':[2,2,2]})
df_3 = pd.DataFrame({'a':[1,2,3],'c':[1,3,5], 'x':[2,3,4]})
#Result.
df_total = pd.DataFrame({'a':[3,5,6],'b':[4,2,4],'c':[3,6,12],'d':[2,2,2], 'x':[2,3,4]})
df_total
a b c d x
0 3 4 3 2 2
1 5 2 6 2 3
2 6 4 12 2 4
让我们pd.concat
然后sum
out = pd.concat([df_1,df_2,df_3],axis=1).sum(level=0,axis=1)
Out[7]:
a b c d x
0 3 4 3 2 2
1 5 2 6 2 3
2 6 4 12 2 4
您可以 add
与 fill_value=0
:
df_1.add(df_2, fill_value=0).add(df_3, fill_value=0).astype(int)
输出:
a b c d x
0 3 4 3 2 2
1 5 2 6 2 3
2 6 4 12 2 4
注意: pandas 本质上使大多数操作沿索引(索引和列 headers)对齐。
我有 3 个 DataFrame,都有超过 100 行和 1000 列。我正在尝试将所有这些 DataFrame 合并为一个,以便汇总每个 DataFrame 的公共列。我知道有一种称为“pd.DataFrame.sum()”的求和方法,但请记住,我有超过 1000 列,我无法手动添加每个公共列。我附上了样本 DataFrame 和我想要的结果。帮助将不胜感激。
#Sample DataFrames.
df_1 = pd.DataFrame({'a':[1,2,3],'b':[2,1,0],'c':[1,3,5]})
df_2 = pd.DataFrame({'a':[1,1,0],'b':[2,1,4],'c':[1,0,2],'d':[2,2,2]})
df_3 = pd.DataFrame({'a':[1,2,3],'c':[1,3,5], 'x':[2,3,4]})
#Result.
df_total = pd.DataFrame({'a':[3,5,6],'b':[4,2,4],'c':[3,6,12],'d':[2,2,2], 'x':[2,3,4]})
df_total
a b c d x
0 3 4 3 2 2
1 5 2 6 2 3
2 6 4 12 2 4
让我们pd.concat
然后sum
out = pd.concat([df_1,df_2,df_3],axis=1).sum(level=0,axis=1)
Out[7]:
a b c d x
0 3 4 3 2 2
1 5 2 6 2 3
2 6 4 12 2 4
您可以 add
与 fill_value=0
:
df_1.add(df_2, fill_value=0).add(df_3, fill_value=0).astype(int)
输出:
a b c d x
0 3 4 3 2 2
1 5 2 6 2 3
2 6 4 12 2 4
注意: pandas 本质上使大多数操作沿索引(索引和列 headers)对齐。