gpt4 book ai didi

python - 带有字典输入的 Pandas "replace"根据字典顺序返回不同的结果(其中字典没有顺序)

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:53 25 4
gpt4 key购买 nike

我有一个 pandas Series,其值为 TrueFalseNone.

import pandas as pd
s = pd.Series([True, True, False, False, None, None])

我想分别替换成1、-1或0。
但是当我运行 .replace 命令时,我发现结果取决于我定义字典的方式。例如,如果我定义了以下两个具有相同键和值的字典,它们的行为应该相同:

dict_1 = {None: 0, False: -1, True: 1}
dict_2 = {False: -1, None: 0, True: 1}

然而,他们没有!

s.replace(dict_1)

输出

0    1
1 1
2 -1
3 -1
4 -1
5 -1

s.replace(dict_2)

返回

0    1
1 1
2 -1
3 -1
4 0
5 0

这是什么原因?我怎样才能确保我得到我想要的行为(第二种情况,比如 dict_2)?

[已编辑:python 3.6.1、pandas 0.21.1 中存在问题。根据 – @Andrey Berenda 的说法,问题不会在 python 3.7 和 pandas 0.25 中重现]

最佳答案

使用Series.map :

mapping = {None: 0, False: -1, True: 1}

s.map(mapping)

0 1
1 1
2 -1
3 -1
4 0
5 0
dtype: int64

或者使用替换,也可以:

s.replace({True: 1, False: -1, None: 0})

0 1
1 1
2 -1
3 -1
4 0
5 0
dtype: int64

关于python - 带有字典输入的 Pandas "replace"根据字典顺序返回不同的结果(其中字典没有顺序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58746723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com