将数据帧中的序列从exp.对象转换为float



我有csv,csv的两列是指数表示法。

我想把它转换成float或int,这样做:

df = pd.read_csv('clm_data.csv', sep = ';')
pd.set_option('display.float_format', '{:.0f}'.format)
df.dtypes

这些类型:

NAME             object
ID               object
RESPONSE_TYPE     int64
RESPONSE_DATE    object
SYSTEM.          object

转换函数:

def unfloater(x):
value = x.replace(',', '.')
return float(value)

当我尝试使用apply来处理多行时,比如:

df[["NAME", "RESPONSE_DATE"]] = df[["NAME", "RESPONSE_DATE"]].apply(unfloater)

我得到了TypeError:无法将序列转换为<类"float">

但当我使用申请一个系列时,一切都很好。

多重申请有什么问题?轴=1是无用的

您现在将一行而不是单个值传递给函数,因此float()不起作用。您可以像这样使用.astype(float)

df = pd.DataFrame({"a": ["1,1e1", "2,2e2", "3,3e3", "4,4e4"],
"b": ["5,5e5", "6,6e6", "7,7e7", "8,8e8"]})
df[["a", "b"]].apply(lambda row: row.str.replace(",", ".")).astype(float)

您可以使用以下方法之一:

方法1:使用astype((

df['NLS'] = df['NLS'].astype(float)

方法2:使用to_numeric((将对象转换为浮点

df['NLS'] = pd.to_numeric(df['NLS'], errors='coerce')

转换所有

df = df.apply(pd.to_numeric)
df.dtypes

最新更新