【发布时间】:2021-12-24 04:14:20
【问题描述】:
我有一个更大数据框的子集:
import pandas as pd
data = {'Name': ['car- at', 'car- ar', 'truck- br', 'car- at'],
'SysNum': [1, 2, 3, 4 ],
}
Name SysNum
0 car- at 1
1 car- ar 2
2 truck- br 3
3 car- at 4
我需要能够在 - 后面的名称中输入数字。破折号在每个名称中,所以我尝试使用几行正则表达式,但到目前为止我无法得到它。数据框应如下所示:
Name SysNum Count
0 car- at 1 car-1 at
1 car- ar 2 car-2 ar
2 truck- br 3 truck-3 br
3 car- at 4 car-4 at
我以前用过类似的东西:
df['BaseName'] = [re.sub('(?<=-)\d{1,6}', '', s) for s in df['Name'].values]
df['SysNum'] = [int(re.search('(?<=-)\d{1,6}', s)[0]) for s in df['Name'].values]
df['NewName'] = df['BaseName'] + df['SysNum'].astype(str)
这会删除 - 之后的数字,然后我在最后一行的末尾添加一组新数字。我现在在末尾有一组字母,所以我需要能够在 - 之后输入一组新数字,并在最后保持字母。 对此的新解决方案或使用正则表达式的方法查看 - 并在下一组字母处停止应该可以工作。谢谢。
【问题讨论】: