【问题标题】:Pandas how to mutate a series based on index values and keep other series values熊猫如何根据索引值改变系列并保留其他系列值
【发布时间】:2019-03-10 20:08:06
【问题描述】:

考虑下面的df和字典

from itertools import product
import pandas as pd

a = list(product((1,2,3),('A','B','C')))
df = pd.DataFrame(a, columns= ['num', 'letter']).set_index('letter')

mapper = {'B' : 21, 'A': 20}

df

   num
A   1
B   1
C   1
A   2
B   2
C   2
A   3
B   3
C   3

我的目标是根据 mapper 替换 num 值,否则保留 num 值。期望的结果如下:

    num     
A   20
B   21
C   1
A   20
B   21
C   2
A   20
B   21
C   3 

如果不循环 mapper 键和设置 num 的值,这是否可以实现?

请注意,我仅尝试映射索引的几个值。这个question 也很有帮助。

提前谢谢你。

熊猫 0.23.4

python 3.7.1

【问题讨论】:

标签: python pandas


【解决方案1】:

mapper 字典转换为pd.Series() 并使用df.update() 更新值:

df.update(pd.Series(mapper,name='num'))
#or df.num=df.index.to_series(name='num').map(mapper).fillna(df.num).astype(int)
print(df.astype(int))

        num
letter     
A        20
B        21
C         1
A        20
B        21
C         2
A        20
B        21
C         3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 2016-04-19
    • 1970-01-01
    相关资源
    最近更新 更多