python - Pandas 如何根据索引值改变序列并保留其他序列值

标签 python pandas

考虑下面的 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也有帮助。

提前谢谢您。

Pandas 0.23.4

Python 3.7.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

关于python - Pandas 如何根据索引值改变序列并保留其他序列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55086991/

相关文章:

python - Pandas 数据框中的行操作

python - 替换单个 DataFrame 列中的负值

python - 基于其他列创建 DataFrame 列(更快的解决方案)

python - Pandas - 使用其他列值作为列名选择列

python - 是否可以用 def 覆盖 cdef 方法?覆盖方法不会执行

python - 如何在 Python 中导出 Selenium IDE 测试套件?

Python:mpmath 在除大数时失去精度

python - Numpy,将数组与标量相乘

python - Pandas 中的 fillna - 如何自动选择最佳方法?

python - 如何在 Python 中访问环境变量?