如何用python中另一个数据帧的值只填充一个数据帧列中缺少的值?
我有两个数据帧,每个数据帧中有多个列。两个数据帧的“SendID”列和“SendDateTime”列都是唯一相同的列。两个数据帧都已完全填写“SendID”。Df1缺少30000个“SendDateTime”。Df2已填写所有“SendID”和“SendDateTime”。我想通过使用“SendID”从df2获取df1中缺少的“SendDateTime”。两个数据帧都有多个不匹配的列 df1(7列) df2(8列) df1中的所需输出(相同的7列),因此所有缺少的“SendDateTime”都使用df2中的“SendID”填写: 我试过:如何用python中另一个数据帧的值只填充一个数据帧列中缺少的值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧,每个数据帧中有多个列。两个数据帧的“SendID”列和“SendDateTime”列都是唯一相同的列。两个数据帧都已完全填写“SendID”。Df1缺少30000个“SendDateTime”。Df2已填写所有“SendID”和“SendDateTime”。我想通过使用“SendID”从df2获取df1中缺少的“SendDateTime”。两个数据帧都有多个不匹配的列 df1(7列) df2(8列) df1中的所需输出(相同的7列),因此所有缺少的“SendDateTime”都使
miss = df1[df1['SendDateTime'].isnull()]
nonmiss = df1[df1['SendDateTime'].notnull()]
miss = miss.merge(df2, how='left', on='SendID')
df1 = nonmiss.append(miss)
我也尝试过:
df1.update(df2)
print(df1)
如何正确执行此操作?您可以从df2中获取不同的id/时间,然后在删除时间列后将它们合并到df1中
df2_t = df2[['SendID','SendDateTime']].drop_duplicates()
df1.drop(columns='SendDateTime').merge(df2_t, on='SendID')
输出
SendID Link SendDateTime
0 12345 Text Box 10/12/2019 8:00:00 AM
1 12345 View Browser 10/12/2019 8:00:00 AM
2 98765 News 11/19/2019 9:30:00 AM
3 98765 Social 11/19/2019 9:30:00 AM
4 45678 Shop 12/24/2019 11:00:00 AM
5 45678 Button 12/24/2019 11:00:00 AM
df1.update(df2)
print(df1)
df2_t = df2[['SendID','SendDateTime']].drop_duplicates()
df1.drop(columns='SendDateTime').merge(df2_t, on='SendID')
SendID Link SendDateTime
0 12345 Text Box 10/12/2019 8:00:00 AM
1 12345 View Browser 10/12/2019 8:00:00 AM
2 98765 News 11/19/2019 9:30:00 AM
3 98765 Social 11/19/2019 9:30:00 AM
4 45678 Shop 12/24/2019 11:00:00 AM
5 45678 Button 12/24/2019 11:00:00 AM