我在类型为object
的pandas df中有一列我要解析以获取字符串中的第一个数字,并创建一个包含该数字的新列int
。
例如:
现有的df
col
'foo 12 bar 8'
'bar 3 foo'
'bar 32bar 98'
所需的df
col col1
'foo 12 bar 8' 12
'bar 3 foo' 3
'bar 32bar 98' 32
我的代码适用于列系列中的任何单个单元格
int(re.search(r'\d+', df.iloc[0]['col']).group())
上面的代码工作正常,返回12应该。但是当我尝试使用整个系列创建一个新列时:
df['col1'] = int(re.search(r'\d+', df['col']).group())
我收到以下错误:
TypeError:期望的字符串或类似字节的对象
我尝试在str()
周围包裹df['col']
,摆脱了错误,但在col1中产生了所有0
我还尝试将col
转换为list
个字符串并迭代list
,这只会产生相同的错误。有谁知道我做错了什么?非常感谢帮助。
答案 0 :(得分:1)
这样可以解决问题:
search = []
for values in df['col']:
search.append(re.search(r'\d+', values).group())
df['col1'] = search
输出如下:
col col1
0 foo 12 bar 8 12
1 bar 3 foo 3
2 bar 32bar 98 32