我有几个pandas数据帧,每个都有一列int,我想创建一个新的数据帧,其中每个索引的值都是和。他们的索引会有一些重叠的条目,这些是我想要加在一起的值。如果只在一个数据帧中找到索引,我希望新数据帧(或系列)包含该索引,并只使用该值作为其值。这似乎是直截了当的,但我无法弄明白,文档似乎更专注于加入数据帧而不是组合它们的值。 基本上,给定两个看起来像这样的数据帧:
>>> df1
0
a 3
b 7
d 2
>>> df2
0
c 11
d 19
我希望最终输出看起来像这样:
>>> df3
0
a 3
b 7
c 11
d 21
提前致谢。
答案 0 :(得分:4)
最简单的答案,如果您只添加两个数据帧:
# fill_value parameter specifies how to treat missing rows, since you can't add NaN (i.e. add 0)
df3 = df1.add(df2, fill_value=0)
df3
Out[18]:
0
a 3
b 7
c 13
d 19
但是,如果您想添加两个以上,最简单,最快捷的方式更像是:
import pandas as pd
# initialize example inputs
df1 = pd.DataFrame([3, 7, 2], index=['a', 'b', 'c'])
df2 = pd.DataFrame([11, 19], index=['c', 'd'])
df3 = pd.DataFrame([3, 7, 11, 21], index=['a', 'b', 'c', 'd'])
# when concatenating with axis=1, columns are added side by side. Rows are matched with other rows having the same index.
aggregate_df = pd.concat([df1, df2, df3], axis=1)
# sum across columns (axis=1). Convert resulting Series to DataFrame
df4 = aggregate_df.sum(axis=1).to_frame()
df4
Out[11]:
0
a 6
b 14
c 24
d 40
dtype: float64