我有两个数据框,其中的索引可以设置为['Date','Name']。现在,我想用在第二个数据框中可以找到的数据(所有列中也可以有NaN值)替换所有通用列的第一个数据框中的NaN。他们看起来像这样:
NaN = np.nan
df1 = pd.DataFrame([
['2020-01-01', 'Foo1', 8, 0.999],
['2020-01-01', 'Bar1', NaN, NaN],
['2020-01-02', 'Foo1', 1, 0.564],
['2020-01-03', 'Foo1', NaN, NaN]],
columns=['Date', 'Name', 'Val1', 'Val2'])
df2 = pd.DataFrame([
['2020-01-01', 'Foo1', 8, 0.999],
['2020-01-01', 'Bar1', 5, 0.6],
['2020-01-02', 'Foo1', 1, 0.564],
['2020-01-03', 'Foo1', NaN, NaN]],
columns=['Date', 'Name', 'Val1', 'Val2'])
我尝试使用where和replace语句来完成此操作,但不幸的是,到目前为止,我无法弄清楚它或找到任何有用的方法。在此先多谢!
尝试使用combine_first
或fillna
df1 = df1.set_index(['Date','Name']).combine_first(df2.set_index(['Date','Name'])).reset_index()
df1
Date Name Val1 Val2
0 2020-01-01 Foo1 8.0 0.999
1 2020-01-01 Bar1 5.0 0.600
2 2020-01-02 Foo1 1.0 0.564
3 2020-01-03 Foo1 NaN NaN
df1 = df1.set_index(['Date','Name']).fillna(df2.set_index(['Date','Name'])).reset_index()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句