首页 > 解决方案 > Pandas 根据另一列的 dict 值添加列

问题描述

给定一个数据框 df,它包含以下列: col1, col2, col3

Col1 包含字符串值(可能的重复值),如下所示:

Val1
Val2
Val3
Val1
Val1
Val1

此外,我有一个存储 Col1 映射的字典 - > 我需要添加到数据框“df”的新值。例子 :

{
    "Val1" : "new_val1",
    "Val2" : "new_val2",
    "Val3" : "new_val3",
}

现在,基于字典映射,我想将“col_new”添加到“df”中。样本最终数据框(仅显示相关列):

col1  col_new
Val1  new_val1
Val2  new_val2
Val3  new_val3
Val1  new_val1
Val1  new_val1
Val1  new_val1

我尝试了 df.map(),但这似乎只在数据框中的键列唯一时才有效。

建议?

标签: pythonpython-3.xpandasdataframe

解决方案


除了@sophods 的回答,您还可以

df['col_new'] = df['col1'].apply(lambda x:your_dict[x])

根据评论添加

import pandas as pd

df=pd.DataFrame({'col1':['Val1','Val2','Val3','Val1','Val1','Val1']})
your_dict={
    "Val1" : "new_val1",
    "Val2" : "new_val2",
    "Val3" : "new_val3",
    }

df['col_new'] = df['col1'].apply(lambda x:your_dict[x])
print(df)

输出

   col1   col_new
0  Val1  new_val1
1  Val2  new_val2
2  Val3  new_val3
3  Val1  new_val1
4  Val1  new_val1
5  Val1  new_val1

推荐阅读