将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(。)之后应填充零。
答案 0 :(得分:1)
尝试使用Series.str.findall
,apply.join
和pandas.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')