gpt4 book ai didi

python - 仅当它与确切的字符串匹配时才替换 pandas python 中的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:34 24 4
gpt4 key购买 nike

我无法以正确的方式替换 pandas 中的字符串。我不确定我是否仅限于使用 pandas 并且可能无法仅使用 pandas 来做到这一点。

这是我的数据框的样子:

 (ID: 10)              247333605                      0.0  
(ID: 20) 36738870 0.0
(ID: 40) 4668036427 0.0
(ID: 50) 1918647972 0.0
(ID: 60) 4323165902 44125.0
(ID: 80) 145512255 0.0
Assigned (ID: 30) 42050340 0.0
Assigned (ID: 40) 130880371376 0.0
Assigning (ID: 30) 1095844753 0.0
Cancelled (ID: 40) 937280 0.0
Cancelled (ID: 80) 16857720813 0.0
Planned (ID: 20) 9060392597 0.0
Planning (ID: 10) 108484297031 0.0
Processed (ID: 70) 133289880880 0.0
Revoked (ID: 50) 2411903072 0.0
Writing (ID: 50) 146408550024 0.0
Written (ID: 60) 139458227923 1018230.0

对于每个 (ID: x),它应该与具有正确 ID 的已分配 (ID: x)、已取消 (ID: x) 等匹配。

使用类似于此行的行:

input_data['last_status'] = input_data.last_status.str.replace('(ID: 10)', 'Planning (ID: 10)')

我的输出是:

(Assigned (ID: 40))                                0.0  
(Cancelled (ID: 80)) 0.0
(Planned (ID: 20)) 0.0
(Planning (ID: 10)) 0.0
(Writing (ID: 50)) 0.0
(Written (ID: 60)) 44125.0
Assigned (Assigned (ID: 40)) 0.0
Assigned (ID: 30) 0.0
Assigning (ID: 30) 0.0
Cancelled (Assigned (ID: 40)) 0.0
Cancelled (Cancelled (ID: 80)) 0.0
Planned (Planned (ID: 20)) 0.0
Planning (Planning (ID: 10)) 0.0
Processed (ID: 70) 0.0
Revoked (Writing (ID: 50)) 0.0
Writing (Writing (ID: 50)) 0.0
Written (Written (ID: 60)) 1018230.0

如您所见,所有 (ID: x) 都已被替换,但它仍然不匹配正确的术语。

我理想的数据框应该是这样的:

 Assigned (ID: 30)       42050340                      0.0  
Assigned (ID: 40) 130880371376 0.0
Assigning (ID: 30) 1095844753 0.0
Cancelled (ID: 40) 937280 0.0
Cancelled (ID: 80) 16857720813 0.0
Planned (ID: 20) 9060392597 0.0
Planning (ID: 10) 108484297031 0.0
Processed (ID: 70) 133289880880 0.0
Revoked (ID: 50) 2411903072 0.0
Writing (ID: 50) 146408550024 0.0
Written (ID: 60) 139458227923 1018230.0

我一定要使用 pandas,因为数据集很大,我有不同的实现,但它们需要几天的时间才能运行。有没有办法在 Pandas 中做到这一点?

我以前从未在 stackoverflow 上问过任何问题。我希望我的问题很清楚。

最佳答案

如果您想概括,您可以使用带有 SOL/EOL anchor 的 str.replace

df['last_status'].str.replace(r'^(\(ID: \d+\))$', r'Planning: \1')

0 Planning: (ID: 10)
1 Planning: (ID: 20)
2 Planning: (ID: 40)
3 Planning: (ID: 50)
4 Planning: (ID: 60)
5 Planning: (ID: 80)
6 Assigned (ID: 30)
7 Assigned (ID: 40)
8 Assigning (ID: 30)
9 Cancelled (ID: 40)
10 Cancelled (ID: 80)
11 Planned (ID: 20)
12 Planning (ID: 10)
13 Processed (ID: 70)
14 Revoked (ID: 50)
15 Writing (ID: 50)
16 Written (ID: 60)
Name: last_status, dtype: object

如果您只想替换特定 ID,请将您的正则表达式更改为 -

r'^(\(ID: 10\))$'

或者,

r'^(\(ID: {}\))$'.format(number)

其中 number 是一个变量,它保存要执行替换的 ID 值。

关于python - 仅当它与确切的字符串匹配时才替换 pandas python 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48448452/

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