我在object
类型的熊猫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())
我收到以下错误:
类型错误:预期字符串或字节状物体
我试过包装一str()
各地df['col']
这得到了在COL1摆脱错误的,但取得了全0
我也试着转换col
到的list
字符串并遍历list
,这只会产生相同的错误。有谁知道我做错了什么?帮助将不胜感激。
检查出来的'DataFrame.apply()'方法。可能你的计算对于简单的分配来说太复杂了。 –
你可以试试'df ['col']。str.extract(r'(\ d +)')' –
@WiktorStribiżew,我还会加上'expand = False' ... – MaxU