python:将多个值分配给字典键并用键替换列值

标签 python pandas

我有一个数据集,其中包含属于相同类别但具有不同名称的值。我正在考虑创建一个字典,其中一个键分配给多个值,然后用该键替换列中的值。这是我所拥有的以及我想要实现的目标。

定义字典

sspdict={'Eva':["M-EV", "G-EV"],'Re Sci': ['G-RESC', 'M-RESC', 'S-RESC', 'D-RESC'], 'Ed':['G-PO' , 'M-PO'], 'Global':['C-GCC', 'D-GCLA', 'C-LACL']}

数据集:

Col1  Col2  Col3
12    No     M-EV
22    Yes    G-EV
23    Yes    G-RESC
35    No     M-PO
34    Yes    D-GCLA
46    No     S-RESC
89    No     G-PO
90    Yes    C-GCC

期望的结果

Col1  Col2  Col3
12    No     Eva
22    Yes    Eva
23    Yes    Re Sci
35    No     Ed
34    Yes    Global
46    No     Re Sci
89    No     Ed
90    Yes    Global

您能帮忙吗?

最佳答案

让我们试试这个单行:

df.assign(Col3 = df['Col3'].apply(lambda x: [key for key, value in sspdict.items() if x in value][0]))

或者让我们使用生成器:

df.assign(Col3 = df['Col3'].apply(lambda x: next(key for key, value in sspdict.items() if x in value)))

输出:

   Col1 Col2    Col3
0    12   No     Eva
1    22  Yes     Eva
2    23  Yes  Re Sci
3    35   No      Ed
4    34  Yes  Global
5    46   No  Re Sci
6    89   No      Ed
7    90  Yes  Global

关于python:将多个值分配给字典键并用键替换列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45830178/

相关文章:

python - 如果特定列中存在重复值,则删除整行

python - Seaborn 中的 FacetGrid 数据标签

python - 在 Pyspark 中将 Pandas Dataframe 转换为 Spark Dataframe 时出现类型错误

python - 有没有办法使用文件作为输入来更改Python中的cwd?

python - asyncio 的 call_later raises 'generator' object is not callable with coroutine object

javascript - 从 python/selenium 与 javascript 可滚动容器交互

javascript - Django AJAX 返回未定义而不是变量

python - 欧拉计划 #255

python - 如何检查pandas中两个日期时间之间的日期时间

python - 将数据帧减少为唯一值和计数