由于我对熊猫完全陌生,我想问一下。
我有两个CSV文件。
其中一列显示了不同语言的所有颜色:
我在这里有三行蓝色:azul, bleu在不同的语言中都是蓝色的意思,所以它们应该在同一组1。Rouge和rojo的意思是红色,所以它们也在同一组,所以它们应该有2。
这是我的第一个表格颜色:
<表类>
名称
组
tbody><<tr>蓝色 1 azul 1 蓝色 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