我有两个数据框由数据透视表创建
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df=pd.DataFrame({'axis1': ['Unix','Window','Apple','Linux'],
'A': [1,np.nan,1,1],
'B': [1,np.nan,np.nan,1],
'C': [np.nan,1,np.nan,1],
'D': [1,np.nan,1,np.nan],
}).set_index(['axis1'])
print (df)
df2=pd.DataFrame({'axis1': ['Unix','Window','Apple','Linux','A'],
'A': [1,1,np.nan,np.nan,np.nan],
'E': [1,np.nan,1,1,1],
}).set_index(['axis1'])
print (df2)
输出看起来像这样
A B C D
axis1
Unix 1 1 NaN 1
Window NaN NaN 1 NaN
Apple 1 NaN NaN 1
Linux 1 1 1 NaN
[4 rows x 4 columns]
A E
axis1
Unix 1 1
Window 1 NaN
Apple NaN 1
Linux NaN 1
A NaN 1
假设我想要将它们组合起来,但我只想要值1 到目前为止,我得到了它,但它没有E列或A行:
>>> df.update(df2)
>>> df
A B C D
axis1
Unix 1 1 NaN 1
Window 1 NaN 1 NaN
Apple 1 NaN NaN 1
Linux 1 1 1 NaN
[4 rows x 4 columns]
如何更新它以获取其他轴值? (包括A行和E列)
答案 0 :(得分:0)
在调用update
之前,您希望reindex第一个Dataframe一种强有力的方法是计算两个df的列和行的并集,也许有更聪明的方法,但我现在无法想到
df = df.reindex(columns=df2.columns.union(df.columns),
index=df2.index.union(df.index))
然后你调用更新,它应该工作。