我有一个表达式(在熊猫数据框中有一行的一行,说“ 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)')
答案 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)