我有下面的pd.DataFrame
:
>>> df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': ['a', 'b', 'c', 'd'], 'c': [1.2, 3.4, 5.6, 7.8], 'd': [..., ..., ..., ...]})
>>> df
a b c d
0 1 a 1.2 Ellipsis
1 2 b 3.4 Ellipsis
2 3 c 5.6 Ellipsis
3 4 d 7.8 Ellipsis
>>>
我正在尝试将省略号替换为1
。
我知道我可以这样做:
>>> df.mask(df == Ellipsis, 1)
a b c d
0 1 a 1.2 1
1 2 b 3.4 1
2 3 c 5.6 1
3 4 d 7.8 1
>>>
但是,出于某种原因。如果我这样做:
df.replace(..., 1)
或者:
df.replace(Ellipsis, 1)
出现以下错误:
TypeError: Expecting 'to_replace' to be either a scalar, array-like, dict or None, got invalid type 'ellipsis'
为什么replace
不允许我替换Ellipsis
?
我知道怎么补救,我想知道为什么会这样。
奇怪的是,我可以用省略号替换数字,但反之则不行。
示例:
>>> df.replace(1, ...)
a b c d
0 Ellipsis a 1.2 Ellipsis
1 2 b 3.4 Ellipsis
2 3 c 5.6 Ellipsis
3 4 d 7.8 Ellipsis
>>>
@jezrael和@phnix在这里提到的更奇怪的事情是:
df.replace({Ellipsis: 1})
还有:
df.replace({...: 1})
以及:
df.replace([Ellipsis], 1)
以及:
df.replace([...], 1)
工作如预期!
它给出:
a b c d
0 1 a 1.2 1
1 2 b 3.4 1
2 3 c 5.6 1
3 4 d 7.8 1
2条答案
按热度按时间3zwtqj6y1#
在我看来,这是一个错误,所以报告了BUG: Can't I replace Ellipsis in DataFrame.replace like scalar #50373。
cbeh67ev2#
您可以使用以下命令:
或