如何用python中另一个数据帧的值只填充一个数据帧列中缺少的值?

如何用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”都使

我有两个数据帧,每个数据帧中有多个列。两个数据帧的“SendID”列和“SendDateTime”列都是唯一相同的列。两个数据帧都已完全填写“SendID”。Df1缺少30000个“SendDateTime”。Df2已填写所有“SendID”和“SendDateTime”。我想通过使用“SendID”从df2获取df1中缺少的“SendDateTime”。两个数据帧都有多个不匹配的列

df1(7列)

df2(8列)

df1中的所需输出(相同的7列),因此所有缺少的“SendDateTime”都使用df2中的“SendID”填写:

我试过:

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