在Python Pandas Dataframe中提取字符串的子字符串的问题

时间:2018-09-28 23:03:44

标签: python regex pandas pandas-groupby

我有一个表达式(在熊猫数据框中有一行的一行,说“ old_col ”)(从数据框中的一列中显示了前两行

abcd_6.9_uuu ghaha_12.8 _sksks

abcd_5.2_uuu ghaha_13.9 _sksks

我试图在数据帧上使用str.extract来获取两个浮点数。但是我发现了两个问题,只有第一个被选中(第一行中的6.9和第二行中的5.2)

1。 那么我该怎么做?

2。 。另外,我如何使提取方法具有通用性,可以提取任意位数的数字(分别为5.7或12.9)

我正在使用: df [' newcol '] = df [' old_col ']。str.extract('(_ \ d。\ d)')

1 个答案:

答案 0 :(得分:1)

要获得一位以上的数字,

df['col'].str.extract('(\_\d+\.\d+)')

    col
0   _6.9
1   _15.9

要获取所有出现的信息,请使用str.extractall

df['col'].str.extractall('(\_\d+\.\d+)')

            col
    match   
0   0      _6.9
    1     _12.8
1   0     _15.9
    1     _13.9

要分配回df:

s = df['col'].str.extractall('(\_\d+\.\d+)')['col']
df['new_col'] = s.groupby(s.index.get_level_values(0)).agg(list)