【发布时间】:2018-09-07 15:17:48
【问题描述】:
我有两个数据框:
pd.DataFrame(data={'col1': ['a', 'b', 'a', 'a', 'b'], 'col2': ['c', 'c', 'd', 'd', 'c'], 'col3': [1, 2, 3, 4, 5, 1]})
col1 col2 col3
0 a c 1
1 b c 2
2 a d 3
3 a d 4
4 b c 5
5 h i 1
pd.DataFrame(data={'col1': ['a', 'b', 'a', 'f'], 'col2': ['c', 'c', 'd', 'k'], 'col3': [12, 23, 45, 78]})
col1 col2 col3
0 a c 12
1 b c 23
2 a d 45
3 f k 78
并且我想根据可以在第二个中找到的 col1 和 col2 的值在第一个中构建一个新列。那就是这个新的:
pd.DataFrame(data={'col1': ['a', 'b', 'a', 'a', 'b'], 'col2': ['c', 'c', 'd', 'd', 'c'], 'col3': [1, 2, 3, 4, 5],'col4' : [12, 23, 45, 45, 23]})
col1 col2 col3 col4
0 a c 1 12
1 b c 2 23
2 a d 3 45
3 a d 4 45
4 b c 5 23
5 h i 1 NaN
我怎么能做到这一点?
感谢您的关注 :)
编辑:有人建议在这个主题Adding A Specific Column from a Pandas Dataframe to Another Pandas Dataframe 中寻找答案,但这不是同一个问题。
在这里,不仅 ID 不存在,因为它被拆分为 col1 和 col2,而且最重要的是,虽然在第二个数据帧中是唯一的,但在第一个数据帧中它不是唯一的。这就是为什么我认为合并和连接都不能解决这个问题。
Edit2 :另外,df1 的 col1 和 col2 对可能不存在于 df2 中,在这种情况下,在 col4 中等待 NaN,并且 df1 中可能不需要 df2 的 col1 和 col2 对.为了说明这些情况,我在 df1 和 df2 中添加了一些行,以显示在最坏情况下的情况
【问题讨论】:
-
df1.merge(df2.rename(columns={'col3': 'col4'})) -
它不起作用,因为 col4 根本不是 df2 的 col3。 col4 必须根据 col1 和 col2 的值从 df2 的 col3 构建
标签: python-3.x pandas dataframe