我是pandas的新手,并试图找出如何将格式化为字符串的多列转换为float64的.目前我正在做下面的事情,但似乎apply()或applymap()应该能够更有效地完成这项任务......不幸的是,我有点太过新手了解如何.目前,这些值的格式为字符串,如'15 .5%'
for column in ['field1', 'field2', 'field3']:
data[column] = data[column].str.rstrip('%').astype('float64') / 100
Run Code Online (Sandbox Code Playgroud) 我想将pandas数据帧中的所有值从字符串转换为浮点数.我的数据帧包含各种NaN值(例如NaN,NA,None).例如,
import pandas as pd
import numpy as np
my_data = np.array([[0.5, 0.2, 0.1], ["NA", 0.45, 0.2], [0.9, 0.02, "N/A"]])
df = pd.DataFrame(my_data, dtype=str)
Run Code Online (Sandbox Code Playgroud)
我在这里和这里(以及其他地方)发现convert_objects可能是要走的路.但是,我收到一条消息,它已被弃用(我使用的是Pandas 0.17.1),而应使用to_numeric.
df2 = df.convert_objects(convert_numeric=True)
Run Code Online (Sandbox Code Playgroud)
输出:
FutureWarning: convert_objects is deprecated. Use the data-type specific converters pd.to_datetime, pd.to_timedelta and pd.to_numeric.
Run Code Online (Sandbox Code Playgroud)
但to_numeric似乎并没有实际转换字符串.
df3 = pd.to_numeric(df, errors='force')
Run Code Online (Sandbox Code Playgroud)
输出:
df2:
0 1 2
0 0.5 0.20 0.1
1 NaN 0.45 0.2
2 0.9 0.02 NaN
df2 dtypes:
0 float64
1 float64
2 float64
dtype: object
df3: …Run Code Online (Sandbox Code Playgroud)