[英]Pandas populate new dataframe column based on matching columns in another dataframe
[英]Mapping a new column in a pandas dataframe based on columns in another dataframe which share a column
因為它通常適用於 pandas 問題,很難想出一個足夠簡潔的標題,這樣人們就可以知道我在問什么而不用太長,但希望它就足夠了。 我將提供一個簡化示例來說明我正在嘗試做什么,因為我當前的工作數據集非常大。
考慮以下簡單的 dataframe:
df = pd.DataFrame([[0, 5 ],
[1, 10],
[2, 20],
[0, 10],
[1, 0 ],
[2, 15]], columns = ["ID", "val"])
這將創建以下 dataframe df
:
ID val
0 0 5
1 1 10
2 2 20
3 0 10
4 1 0
5 2 15
我想把這個 dataframe 和 append 作為一個新列,它是另一個 dataframe 的列的映射值,我調用df_map
如下所示:
df_map = pd.DataFrame([[0,10],
[1,20],
[2,30]], columns = ["ID", "new_val"])
因此,最終的 dataframe 應如下所示:
ID val new_val
0 0 5 10
1 1 10 20
2 2 20 30
3 0 10 10
4 1 20 20
5 2 30 30
映射 function 應該簡單地查看df
中 ID 列的值,並根據df_map
中給出的值分配一個新列
可能這可以通過 pandas 中的.groupby
和.map
函數的組合來完成,但我還沒有弄清楚如何。
任何提示將非常感謝。
您可以使用Series.map :
df['new_val'] = df.ID.map(df_map.set_index('ID').squeeze())
Output
ID val new_val
0 0 5 10
1 1 10 20
2 2 20 30
3 0 10 10
4 1 0 20
5 2 15 30
請注意, df_map.set_index('ID').squeeze()
的擠壓將 DataFrame 轉換為系列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.