python - 使用一对多字典替换或映射 pandas 数据框列中的值

标签 python pandas dataframe

我有一个数据框列,需要将其替换为字典中定义的类别。

我正在使用字典并使用 for 循环,其中有 if 和 elif 语句,我用它们替换值。

   dict_col = {'Red':['Light_Red','Crimson','Ferrari_Red'],'Blue:['Light_Blue','Azure_Blue','Sky_Color']}

我想知道是否有一种干净且更好的方法来执行此操作,而不是使用 for 循环。

enter image description here

最佳答案

是的,有。您可以在 pandas 中使用 map 函数:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.map.html

你希望字典是相反的:

完整示例:

import pandas as pd

dict_col = {'Red':['Light_Red','Crimson','Ferrari_Red'],'Blue':['Light_Blue','Azure_Blue','Sky_Color']}
dict_col = {val: k for k, l in dict_col.items() for val in l}
df = pd.DataFrame(("Light_Red", 'Light_Blue'), columns=["Colors"])
df["Colors"].map(dict_col)

关于python - 使用一对多字典替换或映射 pandas 数据框列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64100268/

相关文章:

python - 连接同一数据框中的行

python - 重组 pandas 多索引列

python - Python 编程 : Controlling Stepper Motor + Raspberry Pi Zero + L293D IC

python - 使用 python 更新电子邮件中的类别

python - 在大型文本文件中搜索字符串的廉价方法

python - 与 pypi.org 的连接超时

python - Pandas 是一段时间内的时间戳

python - Pandas - 在数据框中找不到列

python - 使用两个数据框计算最终值 pandas

python - 如何将字符串类型的列转换为pyspark数据框中的int形式?