Cam*_*593 6 python regex pandas
我在 Pandas df 类型object中有一个列,我想解析它以获取字符串中的第一个数字,并创建一个包含该数字的新列作为int.
例如:
现有的df
col
'foo 12 bar 8'
'bar 3 foo'
'bar 32bar 98'
Run Code Online (Sandbox Code Playgroud)
所需的 df
col col1
'foo 12 bar 8' 12
'bar 3 foo' 3
'bar 32bar 98' 32
Run Code Online (Sandbox Code Playgroud)
我有适用于列系列中任何单个单元格的代码
int(re.search(r'\d+', df.iloc[0]['col']).group())
上面的代码工作正常并返回 12 。但是当我尝试使用整个系列创建一个新列时:
df['col1'] = int(re.search(r'\d+', df['col']).group())
我收到以下错误:
类型错误:预期的字符串或类似字节的对象
我想一个包裹str()围绕df['col']这摆脱了错误,但取得了全0在COL1
我还尝试转换col为 a listof 字符串并遍历list,这只会产生相同的错误。有谁知道我做错了什么?帮助将不胜感激。
Alb*_*lbo 11
这将解决问题:
search = []
for values in df['col']:
search.append(re.search(r'\d+', values).group())
df['col1'] = search
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
col col1
0 foo 12 bar 8 12
1 bar 3 foo 3
2 bar 32bar 98 32
Run Code Online (Sandbox Code Playgroud)