有了这两个数据框
df1 = pd.DataFrame({'c1':['a','b','c','d'],'c2':[10,20,10,22]})
df2 = pd.DataFrame({'c3':['e','f','a','g','b','c','r','j','d'],'c4':[1,2,3,4,5,6,7,8,9]})
我尝试将 c4
的值添加到 df1
,仅针对 c3
中也存在于 中的元素c1
:
>>> df1
c1 c2 c4
a 10 3
b 20 5
c 10 6
d 22 9
在 pandas 中是否有一种简单的方法可以做到这一点?
更新:
如果
df2 = pd.DataFrame({'c3':['e','f','a','g','b','c','r','j','d'],'c4':[1,2,3,4,5,6,7,8,9]},'c5':[10,20,30,40,50,60,70,80,90])
我怎样才能达到这个结果?
>>> df1
c1 c2 c4 c5
a 10 3 30
b 20 5 50
c 10 6 60
d 22 9 90
正在做:
>>> df1['c1'].map(df2.set_index('c3')['c4','c5'])
给了我一个KeyError
最佳答案
在df2['c3']
上设置索引后,您可以在df2['c4']
上调用map
,这将执行查找:
In [239]:
df1 = pd.DataFrame({'c1':['a','b','c','d'],'c2':[10,20,10,22]})
df2 = pd.DataFrame({'c3':['e','f','a','g','b','c','r','j','d'],'c4':[1,2,3,4,5,6,7,8,9]})
df1['c4'] = df1['c1'].map(df2.set_index('c3')['c4'])
df1
Out[239]:
c1 c2 c4
0 a 10 3
1 b 20 5
2 c 10 6
3 d 22 9
关于python - 仅针对某些特定元素向数据框添加值 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31748714/