【发布时间】:2015-09-03 12:20:30
【问题描述】:
场景:
- df1 具有所有可能的拍卖 ID 值
- df2 具有可能的拍卖 ID 值的子集
- df2 包含拍卖中存在的对象 ID(可以是 0 或正整数)
目标:
创建一个新的 df1 列“object_id”,填充 df2 中的相应值
示例...
df1 = pd.DataFrame(columns=['auction_id'], data=[1,2,3,4,5,6,7,8,9])
auction_id
1
2
3
4
5
6
7
8
9
df2 = pd.DataFrame({'auction_id':[1,2,4,6,7,8,9], 'object_id': [640,0,332,332,0,58,332]})
auction_id object_id
1 640
2 0
4 332
6 332
7 0
8 58
9 332
到目前为止我的最大努力
使用vlookup in Pandas using join):
df1['object_id'] = df1.auction_id.map(df2.object_id)
产量:
df1
auction_id object_id
1 0
2 332
3 332
4 0
5 58
6 332
7 NaN
8 NaN
9 NaN
【问题讨论】:
-
@EdChum - 我引用了您建议的重复帖子,并尝试应用它推荐的 .map() 函数。我这样做的结果列在上面的“我迄今为止的最大努力”下。我意识到我一定错过了什么;你能帮我理解如何在这个例子中使用 .map() 函数吗?
-
你可以这样做
df1['object_id'] = df1.auction_id.map(df2.set_index('auction_id').object_id)如果你传递一个系列那么索引必须是你试图执行查找的集合
标签: python join pandas dataframe vlookup