使用Regex在Pandas Dataframe中创建新列

时间:2017-09-21 18:16:47

标签: python regex pandas

我在类型为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,这只会产生相同的错误。有谁知道我做错了什么?非常感谢帮助。

1 个答案:

答案 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