[英]Copy column value from a dataframe to another if values are equal
我有兩個這樣的數據框(這是一個例子,因為我的數據框很復雜):
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'])`
我的兩個數據幀的長度不同。
正如您在我的第二個 df_c 中所見,某些“id”出現了 2 次。 (對於 id=2)
我想在我的df_c
中創建一個新列,如果'id'
來自我的 df_c == 'id' 從我的df_p
復制我的 df_p 的值'redness' of my df_p
' 。
不知道說的清楚不。。。
多謝 !!!
使用可以簡單地嘗試將 df_p 兩列轉換為字典 any 使用 lambda 查找每個 id 的紅色,並創建新列。
代碼:
df_c['redness'] = df_c['id'].apply(lambda x: pd.Series(df_p.redness.values,index=df_p.id).to_dict()[str(x)])
df_c
一個簡單的合並就可以解決問題:
您遇到的一個問題是,在一個 dataframe 中,您的id
是string
類型,
在另一個 dataframe 中, id
是int
類型。
解決這個問題的最簡單方法是在 merge 之前將字符串轉換為 int ,
並在需要時轉換回來。
df_p.id = df_p.id.astype(int)
df_c = pd.merge(df_c, df_p, on=['id'], how='left')
print(df_c)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.