gpt4 book ai didi

python - Pandas :Dataframe.replace() 与正则表达式

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

我有一个看起来像这样的表:

df_raw = pd.DataFrame(dict(A = pd.Series(['1.00','-1']), B = pd.Series(['1.0','-45.00','-'])))

A B
0 1.00 1.0
1 -1 -45.00
2 NaN -

我想使用 dataframe.replace() 将“-”替换为“0.00”,但由于负值“-1”、“-45.00”而难以实现。

如何忽略负值并仅将“-”替换为“0.00”?

我的代码:

df_raw = df_raw.replace(['-','\*'], ['0.00','0.00'], regex=True).astype(np.float64)

错误代码:

ValueError: invalid literal for float(): 0.0045.00

最佳答案

您的正则表达式匹配所有 - 字符:

In [48]:
df_raw.replace(['-','\*'], ['0.00','0.00'], regex=True)

Out[48]:
A B
0 1.00 1.0
1 0.001 0.0045.00
2 NaN 0.00

如果您放置额外的边界,以便它只匹配带有终止符的单个字符,那么它会按预期工作:

In [47]:
df_raw.replace(['^-$'], ['0.00'], regex=True)

Out[47]:
A B
0 1.00 1.0
1 -1 -45.00
2 NaN 0.00

此处 ^ 表示字符串的开头,$ 表示字符串的结尾,因此它只会匹配该单个字符。

或者你可以只使用 replace ,它只会匹配完全匹配:

In [29]:

df_raw.replace('-',0)
Out[29]:
A B
0 1.00 1.0
1 -1 -45.00
2 NaN 0

关于python - Pandas :Dataframe.replace() 与正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32201222/

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