【发布时间】:2017-08-01 12:44:27
【问题描述】:
嗯,这有点难以解释......
假设您有 2 个 pandas 数据框和 1 个字典。
df1 = pd.DataFrame(np.random.randn(5, 3), columns=['b', 'c','d'])
df1['a'] = pd.Series(['1 A1-1','3 A1-1','8 A1-2','17 A1-3','45 A1-16'], index=df1.index)
df1 = df1.reindex_axis(sorted(df1.columns), axis=1)
df2 = pd.DataFrame([['1 A1-1',5],['2 A1-1',8],['3 A1-1',10],['8 A1-2',4],['17 A1-3',1],['45 A1-16',2]], columns = ['m','n'])
dt = {'A1-1':100, 'A1-2':150, 'A1-3':200, 'A1-4':250, 'A1-5':300, 'A1-16':950}
df1['a'] 和 df2['m'] 包含 IDs,有些是相同的。 df2['n'] 包含附加值。 dt 包含 ID 组的基本值,例如 A1-1、A1-2 等。
我现在想比较/合并df1、df2 和dt 中的数据,以便能够向df1 添加一个新列:
每当df1['a'] 和df2['m'] 中的IDs 相同时,将字典中具有相同字符串部分的基本值添加到相应的df2['n'] 中,然后将结果转移到df1['e'] 中的新列中。
我遇到的一个主要问题是 ID 和 dict 键中的字符串处理:例如 df1 中的 '1 A1-1' 和 df2 和 dt 中的 'A1-1' - 不知道如何比较它们。
最有帮助的是df1['e'] = pd.Series([105,110,154,201,952], index = df1.index)这样的结果。
感谢您的帮助。
【问题讨论】:
标签: python pandas dictionary dataframe string-comparison