web-dev-qa-db-ja.com

Pandas複数のデータフレームを合計する

複数のデータフレームがあり、それぞれにマルチレベルのインデックスと値の列があります。値列のすべてのデータフレームを合計したいと思います。

_df1 + df2_

すべてのインデックスが各データフレームで完了しているわけではないため、すべてのデータフレームに存在しない行でnanを取得しています。

これを克服して、どのデータフレームにも存在しない行を値0として扱うにはどうすればよいですか?

例えば。私は手に入れたい

_   val
a    2
b    4
c    3
d    3
_

の代わりにpd.DataFrame({'val':{'a': 1, 'b':2, 'c':3}}) + pd.DataFrame({'val':{'a': 1, 'b':2, 'd':3}})から

_   val
a    2
b    4
c  NaN
d  NaN
_
14
cppgnlearner

addメソッドをfill_value=0パラメータとともに使用します。

df1 = pd.DataFrame({'val':{'a': 1, 'b':2, 'c':3}})
df2 = pd.DataFrame({'val':{'a': 1, 'b':2, 'd':3}})

df1.add(df2, fill_value=0)

enter image description here


MultiIndexの例

idx1 = pd.MultiIndex.from_tuples([('a', 'A'), ('a', 'B'), ('b', 'A'), ('b', 'D')])
idx2 = pd.MultiIndex.from_tuples([('a', 'A'), ('a', 'C'), ('b', 'A'), ('b', 'C')])

np.random.seed([3,1415])
df1 = pd.DataFrame(np.random.randn(4, 1), idx1, ['val'])
df2 = pd.DataFrame(np.random.randn(4, 1), idx2, ['val'])

df1

enter image description here

df2

enter image description here

df1.add(df2, fill_value=0)

enter image description here

14
piRSquared