我的数据框缺少值。我需要以两种方式更新缺失值。 1.根据最新日期和ID来自同一数据框。 2.根据日期和ID从另一个数据框中获取
df
id date name location type
11 08-05-2019 aim ind ss
12 08-05-2019 paul uk ee
11 08-04-2019 aim ee
13 08-05-2019 tera uk jj
13 08-01-2019 tera kk
15 08-09-2019 usa ii
15 08-05-2019 uk ii
13 08-05-2019 tera uk
基于基于ID和最新日期从同一数据框中填充nan的预期输出
df1
id date name location type
11 08-05-2019 aim ind ss
12 08-05-2019 paul uk ee
11 08-04-2019 aim ind ss
13 08-05-2019 tera uk jj
13 08-01-2019 tera uk kk
15 08-09-2019 usa ii
15 08-05-2019 uk ii
13 08-05-2019 tera uk jj
在df1中,我仅需要基于日期和id列替换数据框y中的nan值。
y
id date name location type rev
11 08-05-2019 aim ind ss yes
12 08-05-2019 paul uk ee no
11 08-04-2019 aim ind ee yes
13 08-05-2019 tera uk jj yes
13 08-01-2019 tera uk kk yes
15 08-09-2019 sam usa ii no
15 08-05-2019 jim uk ii no
13 08-05-2019 tera uk kk no
14 09-05-2019 tiya uk kk yes
15 10-05-2019 tiya ind kk yes
我在第二个选项中尝试了此代码,但无法正常工作。
y.set_index(['id','date']).combine_first(df1.set_index(['id','date'])).reset_index()
和
df, y = df.set_index('id','date'), y.set_index('id','date')
df.update(y)
df.reset_index(inplace=True)
但出现多索引错误
我无法从df中获取df1,因此直接尝试在y的帮助下更新df
最终预期输出是
id date name location type
11 08-05-2019 aim ind ss
12 08-05-2019 paul uk ee
11 08-04-2019 aim ind ee
13 08-05-2019 tera uk jj
13 08-01-2019 tera uk kk
15 08-09-2019 sam usa ii
15 08-05-2019 jim uk ii
13 08-05-2019 tera uk kk
答案 0 :(得分:0)
您刚刚获得了相反的数据框名称。以下应该可以工作
df1.set_index(['id','date']).combine_first(y[df1.columns].set_index(['id','date'])).reset_index()