python - 映射字典时在单独的 pandas 列中设置值

标签 python pandas

我有一本字典:

d = {"A":1, "B":2, "C":3}

我还有一个 pandas 数据框:

col1
A
G
E
B
C

我想通过将字典映射到 col1 来创建一个新列。同时,我想设置另一列中的值以指示该行中的值是否已被映射。所需的输出如下所示:

col1    col2    col3
A       1       1
G       NaN     0
E       NaN     0
B       2       1
C       3       1

我知道可以使用df.col1.map(d)创建col2,但是如何同时创建col3

最佳答案

您可以在一个函数中创建两列assign - 首先是map,第二个是isin对于转换为整数的 bool 掩码:

df = df.assign(col2=df.col1.map(d), col3=df.col1.isin(d.keys()).astype(int))
print (df)
  col1  col2  col3
0    A   1.0     1
1    G   NaN     0
2    E   NaN     0
3    B   2.0     1
4    C   3.0     1

另一个具有不同 bool 掩码的两步解决方案 - 通过检查不缺失值:

df['col2'] = df.col1.map(d)
df['col3'] = df['col2'].notnull().astype(int)

关于python - 映射字典时在单独的 pandas 列中设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53521009/

相关文章:

python - Pandas ,在遍历分组数据中的行时使用生成的值

python - 如何使用 python 和 pandas 获取特定索引处的列名称并将其打印到另一列中

python - 将 df 保存和检索为 .csv,而不丢失类型信息

python - Python 中的 Apache Avro 性能非常缓慢,编码为消息与文件时的结果不同

python - XPath 从两个子文本获取父元素

python - 在 Python 中分箱后返回范围的下限或上限

mysql - 将字典键映射到 Mysql 数据库表列

python - 无法在 anaconda python 中使用 netcdf4

python - 如何获得flask_sqlalchemy 类的PEP 484 类型提示?

python - 如何在 Python 中嵌套单行语句?