【问题标题】:Using a dictionary to map specific values in python [duplicate]使用字典映射python中的特定值[重复]
【发布时间】:2020-10-04 14:16:48
【问题描述】:

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

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)

但我到处都在出错!

【问题讨论】:

标签: python pandas


【解决方案1】:

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]is discouraged in the docs,并且在分配时会产生负面影响,即您不会更新原始数据帧,因为它会返回一个副本。

【讨论】:

    猜你喜欢
    • 2012-08-27
    • 2019-11-10
    • 2011-03-14
    • 2016-08-31
    • 2011-10-18
    • 2021-07-23
    • 1970-01-01
    相关资源
    最近更新 更多