如何通过比较值到另一个csv文件中的三个不同列来填充csv中的一列?



由于我对熊猫完全陌生,我想问一下。

我有两个CSV文件。

其中一列显示了不同语言的所有颜色:

我在这里有三行蓝色:azul, bleu在不同的语言中都是蓝色的意思,所以它们应该在同一组1。Rouge和rojo的意思是红色,所以它们也在同一组,所以它们应该有2。

这是我的第一个表格颜色:

<表类> 名称 组 tbody><<tr>蓝色1azul1蓝色1胭脂红色红色的佛得角绿色绿色

您可以首先使用pd.melt将df2中的所有列转移到行中,然后使用pd.merge将其与颜色名称列上的df1合并:

df2 = pd.melt(df2, id_vars=['group'], value_vars=['english', 'french', 'spanish'], value_name='color')
merged_df = pd.merge(df1, df2, left_on='name', right_on='color')[['name', 'group']]

结果:

name    group
0   blue    1
1   azul    1
2   bleu    1
3   rouge   2
4   red     2
5   rojo    2
6   verde   3
7   vert    3
8   green   3

您可以使用map

使用df2,您可以创建一个字典d,然后将名称值映射到相应的组。

d = dict(zip(df2.T.values[3], df2.values[:,:3].tolist()))
df1['group'] = df1.name.map(lambda x: [k for k in d if x in d[k]][0])

d:

{3: ['green', 'vert', 'verde'],
2: ['red', 'rouge', 'rojo'],
1: ['blue', 'bleu', 'azul']}

df1:

name    group
0   blue    1
1   azul    1
2   bleu    1
3   rouge   2
4   red     2
5   rojo    2
6   verde   3
7   vert    3
8   green   3

相关内容

最新更新