首页 > 解决方案 > Pandas:在数据框中创建列并通过查看另一个数据框为该列分配值

问题描述

我有两个数据框如下。

DF1 和 DF2

在此处输入图像描述

在此处输入图像描述

我想在 DF1 中创建一个列作为“名称”并根据以下条件分配值。

1) Check if DF1['C1'] value is available in DF2['C']
2) If yes, assign DF1['name'] with the value in DF2['name']
3) If no, Check if DF1['C2'] value is available in DF2['C']
4) If yes, assign DF1['name'] with the value in DF2['name']
5) If both DF1['C1'] value is not found in DF2['C'] then assign DF1['name'] as other.

输出:

在此处输入图像描述

标签: pythonpandasnumpydataframe

解决方案


map每列都有第二个 DataFrame 并用于combine_first处理您的优先级逻辑。然后填充任何缺失值以获得'other'

s = df2.set_index('C')['name']
df1['name'] = df1['C1'].map(s).combine_first(df1['C2'].map(s)).fillna('other')

   C1  C2   name
0   0   1      x
1   6   4      z
2   7   5  other

推荐阅读