我在Python 3中使用Pandas。我有一堆带有一堆列的数据框,但我只想更改其中一列中所有值的数据类型,而不管其他列。我能找到完成此任务的唯一方法是编辑列,删除原始列,然后将编辑后的列合并。我想编辑列而不必删除和合并,使数据帧的其余部分不受影响。这可能吗?
以下是我的解决方案:
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
def make_float(var):
var = float(var)
return var
#create a new dataframe with the value types I want
df2 = df1['column'].apply(make_float)
#remove the original column
df3 = df1.drop('column',1)
#merge the dataframes
df1 = pd.concat([df3,df2],axis=1)
将函数直接应用于数据框也不起作用。例如:
df1['column'].apply(make_float)
print(type(df1.iloc[1]['column']))
的产率:
<class 'str'>
答案 0 :(得分:2)
df1['column'] = df1['column'].astype(float)
如果某行的转换失败,则会引发错误。
应用不适用于现场,而是返回您在此行中放弃的系列:
df1['column'].apply(make_float)
答案 1 :(得分:1)
除了Yakym的解决方案,你也可以这样做 -
df['column'] += 0.0