通过应用某些字符串格式将数据框的字符串(对象)列转换为数字

时间:2019-04-13 07:50:27

标签: python pandas dataframe format

将pandas数据框设为

index           A    
    0       1qwe 3asd
    1       6qwe 35asd
    2       11qwe 13asd
    3       17qwe 8asd
    4       5qwe 9asd
    5       7qwe 2asd
    6       1qwe 20asd

A.dtype = object

按如下所示转换此数据框

index        A    
    0       1.03
    1       6.35
    2       11.13
    3       17.08
    4       5.09
    5       7.02
    6       1.20

A.dtype = float64

在python中可以转换吗?如果是,请以有效的方式提供代码。

如果仅存在一位,则在period(。)之后应填充零。

2 个答案:

答案 0 :(得分:1)

尝试使用Series.str.findallapply.joinpandas.to_numeric

df['A'] = pd.to_numeric(df.A.str.findall('(\d+)').apply('.'.join))

0     1.30
1     6.35
2    11.13
3    17.80
4     5.90
5     7.20
6     1.20
Name: A, dtype: float64

答案 1 :(得分:1)

您可以通过一个str.replace通话来完成此操作,

df['A'].str.replace(r'(\d+).*?(\d+).*', lambda x: '{}.{:0>2}'.format(x[1], x[2]))

pd.to_numeric(df['A'].str.replace(
  r'(\d+).*?(\d+).*', lambda x: '{}.{:0>2}'.format(x[1], x[2])), errors='coerce')