1
如何在python中疊加/合併兩個數據幀,以便重疊的單元格(索引,列)被添加,而不常見的單元格保留原始數據框中的值?在Python中合併兩個數據幀
這可以在Excel中解釋爲here。
對於如: 我有兩個數據幀
我要輸出到像
如何在python中疊加/合併兩個數據幀,以便重疊的單元格(索引,列)被添加,而不常見的單元格保留原始數據框中的值?在Python中合併兩個數據幀
這可以在Excel中解釋爲here。
對於如: 我有兩個數據幀
我要輸出到像
您需要add
與fillna
,但在df1
和df2
必須是NO NaN
值,be導致fillna
刪除:
print (df1.add(df2, fill_value=0).fillna(0).astype(int))
a b c
a1 1 2 0
a2 3 514 123
a3 5 539 134
既indexes
和reindex
的union
另一個解決方案 - 工作,如果NaN
在DataFrames
:
idx = df1.index.union(df2.index)
print (df1.reindex(idx, fill_value=0))
a b
a1 1 2
a2 3 4
a3 5 6
print (df2.reindex(idx, fill_value=0))
b c
a1 0 0
a2 510 123
a3 533 134
idx = df1.index.union(df2.index)
print (df1.reindex(idx, fill_value=0)
.add(df2.reindex(idx, fill_value=0), fill_value=0)
.astype(int))
a b c
a1 1 2 0
a2 3 514 123
a3 5 539 134
df1 = pd.DataFrame({'a':[1,3,5],
'b':[2,4,6]}, index=['a1','a2','a3'])
print (df1)
a b
a1 1 2
a2 3 4
a3 5 6
df2 = pd.DataFrame({'b':[510,533],
'c':[123,np.nan]}, index=['a2','a3'])
print (df2)
b c
a2 510 123.0
a3 533 NaN
print (df1.reindex(idx, fill_value=0).add(df2.reindex(idx, fill_value=0), fill_value=0))
a b c
a1 1.0 2 0.0
a2 3.0 514 123.0
a3 5.0 539 NaN
print (df1.add(df2, fill_value=0).fillna(0).astype(int))
a b c
a1 1 2 0
a2 3 514 123
a3 5 539 0 <- replace NaN to 0
比非常感謝你!我已經與您的第一個解決方案,第二個解決方案可能會摺疊索引。糾正我,如果我錯了 – user3471409
我認爲第二個解決方案也可以工作,但它有點複雜,因爲如果數據框(其中一個或兩個)具有'NaN'則工作。 – jezrael