首页 > 解决方案 > 使用字典映射python中的特定值

问题描述

我正在遍历数据框并提取特定行,然后用其他一些元素丰富这些行。我有一个具有以下定义映射的字典:

testdir = {0: 'zero', 40: 'forty', 60: 'sixty', 80: 'eighty'}

当我从看起来像这样的原始数据框中拉出特定行时

a   b   c      x   str
0  0   0   0  100.0  aaaa

我希望现在将 str 单元格设置为 c 列的字符串值,即 0 所以

输出应该是

a   b   c      x   str
0  0   0   0  100.0  zero

然后在满足其他一些条件后,从原始数据帧中拉出一条新行,输出应该是

a   b   c      x   str
0  0   0   0  100.0  zero
3  4  30  60  100.0  sixty

我尝试使用 map() 方法,例如'

df['str'][-1] = df['c'][-1].map(testdir)

但我到处都在出错!

标签: pythonpandas

解决方案


map适用于pd.Series,因此,如果可以,只需在整个列完全填充时映射整个列,这样您就可以避免多次调用map

df['str'] = df.c.map(testdir)

print(df)

   a   b   c      x    str
0  0   0   0  100.0   zero
3  4  30  60  100.0  sixty

请注意,要正确索引单个单元格上的数据框并使用字典进行映射,您需要以下内容:

testdir[df.iat[-1, 2]]

df['c'][-1] 文档中不鼓励使用链式索引,并且在分配时会产生负面影响,即您不会更新原始数据帧,因为它会返回一个副本。


推荐阅读