我有两个这样的 Dataframe (这是一个例子,因为我的 Dataframe 是复杂的):
lst_p = [['2', 0], ['3', 1], ['4', 0], ['5', 0]]
df_p = pd.DataFrame(lst_p, columns =['id', 'redness'])
lst_c = [['apple', 2], ['orange', 2], ['banana', 3], ['kiwi', 4], ['cherry', 5]]
df_c = `pd.DataFrame(lst_c, columns =['name', 'id'])`
我的两个 Dataframe 长度不同。
正如您在我的第二个df_c中所看到的,某些'id'出现了2次。(对于id=2)
我想在我的df_c
中创建一个新列,该列从我的df_p
中复制值'redness' of my df_p
if 'id'
from my df_c == 'id'。
我不知道这是不是很清楚...
非常感谢!
2条答案
按热度按时间ahy6op9u1#
一个简单的**merge就可以达到这个目的:
您遇到的一个问题是,在一个 Dataframe 中,您的
id
属于string
类型,并且在另一个 Dataframe 中,
id
是int
类型。解决这个问题最简单的方法是在合并之前将字符串转换为int**,
并且如果需要的话可以转换回来。
代码:
输出:
euoag5mw2#
使用可以简单地尝试将df_p两列转换为字典any使用lambda查找每个id的redness,并创建新列。
编码: