【发布时间】:2020-12-08 19:08:59
【问题描述】:
我对 Python 比较陌生,并且有一个关于跨数据框的条件替换的问题。
我有两个数据框,A 和 B,只要有匹配的 id (nid),我想用 B 中的日期更新 A 中的日期。
import pandas as pd
import numpy as np
nid1 = (1, 3, 4, 8)
date1 = ("2010-02-01", "2008-06-05", "2011-03-15", "2009-02-17")
info1 = ("b", "m", "d", "m")
nid2 = (1, 3)
date2 = ("2010-08-01", "2008-01-01")
dfa = pd.DataFrame(list(zip(nid1, date1, info1)), columns =['nid', 'date', 'info'])
dfb = pd.DataFrame(list(zip(nid2, date2)), columns =['nid', 'date'])
只要有匹配的 id,我想将 dfa 中的日期变量更新为 dfb 中的数据变量。
我没有运气尝试将 A 转换为字典来替换
dict_b = dfb.set_index('nid').to_dict()['date']
dfa["date"].replace(dict_b, inplace=True)
或者使用 np.where
np.where(dfa["nid"].isin(dfb["nid"]), dfb["date"], dfa["date"])
谁能给我一个提示?
【问题讨论】:
标签: python pandas dataframe replace conditional-statements