我有来自pandas
的数据框。我不确定如何开始提取信息。
该列中的数据如下:
->Company A 100->Company B 60->Company C 80-> Company D
->Company A 100->Company B 53.1->Company C 82.2->Company D 100-> Company G
->Company A 100->Company B 23-> Company D
等...
公司的信息并不重要,只是每个项目中的最后一个数字。
我想提取最后一个->
之前的数字并将其粘贴到另一列中。
例如,分别提取80
,100
和23
。
80
100
23
我有这个
import re
text = '->Company A 100->Company B 60->Company C 80-> Company D'
re.findall(r'\d+', text)[-1]
给出正确的输出'80'
但是当我为df
re.findall(r'\d+', df['ColumnName'])[-1]
我得到:TypeError:预期的字符串或类似字节的对象
答案 0 :(得分:1)
如果需要字符串的最后一个数字,可以尝试以下操作:
df['num'] = df['text'].str[::-1].str.extract('(\d+)')
df['num'] = df['num'].str[::-1]
df
text num
0 -> Company A 100->Company B 60->Company C 80->... 80
1 -> Company A 100->Company B 53.1->Company C 82... 100
2 -> Company A 100->Company B 23-> Company D 23
如果只希望最后一个'->'之前的数字,也可以尝试以下操作:
df['num'] = df['text'].str.split('->').str[-2].str.extract('(\d+)')
text num
0 -> Company A 100->Company B 60->Company C 80->... 80
1 -> Company A 100->Company B 53.1->Company C 82... 100
2 -> Company A 100->Company B 23-> Company D 23
如果您还要在最后一个'->'前加上浮点数:
df['text'].str.split('->').str[-2].str.extract('(\d+(?:\.\d+)?)')
更改在正则表达式中
答案 1 :(得分:1)