根据 Date 列将 df1 中的列添加到 df2 中,如果缺少 df1 [Date] 条目,则填写 na
Add column from df1 into df2 based on the Date column and fill na if df1 [Date] entries are missing
我的数据框 df1
有 850 行和列名 ['Date', 'A']
。
我还有 df2
900 行和列名 ['Date', 'B', 'C', 'D']
.
它们的行数不同是因为 df1
缺少一些 'Date' 条目。但是,df1['Date'] 中的所有条目都在 df2['Date'].
中
问题:
我想在相同的 ['Date']
行的基础上将 df1['A']
合并到 df2
。合并后,我希望结果 df2['A']
为 df1
.
中缺少 ['Dates']
的所有行反映 'na'
我试过 df2=pd.merge(df2, df1, on="Date")
但结果 df2
有 850 行,这似乎是 df1 和 df2 之间不匹配的日期被删除了。相反,我希望 post-合并结果 df2
为 900 行,并且不匹配的日期行应在 df2['A']`.[=24= 中显示 'na' ]
如何实现?
使用 left
加入而不是 inner
加入(默认行为)
即
new_df = pd.merge(df2, df1, on="Date", how='left')
用零填充NA
(正如OP在评论中所要求的),
new_df.fillna(0, inplace=True)
# new_df['column'] = new_df['column'].astype(np.float64) # to convert column to float
我的数据框 df1
有 850 行和列名 ['Date', 'A']
。
我还有 df2
900 行和列名 ['Date', 'B', 'C', 'D']
.
它们的行数不同是因为 df1
缺少一些 'Date' 条目。但是,df1['Date'] 中的所有条目都在 df2['Date'].
问题:
我想在相同的 ['Date']
行的基础上将 df1['A']
合并到 df2
。合并后,我希望结果 df2['A']
为 df1
.
['Dates']
的所有行反映 'na'
我试过 df2=pd.merge(df2, df1, on="Date")
但结果 df2
有 850 行,这似乎是 df1 和 df2 之间不匹配的日期被删除了。相反,我希望 post-合并结果 df2
为 900 行,并且不匹配的日期行应在 df2['A']`.[=24= 中显示 'na' ]
如何实现?
使用 left
加入而不是 inner
加入(默认行为)
即
new_df = pd.merge(df2, df1, on="Date", how='left')
用零填充NA
(正如OP在评论中所要求的),
new_df.fillna(0, inplace=True)
# new_df['column'] = new_df['column'].astype(np.float64) # to convert column to float