仅更改DataFrame的一列

时间:2016-05-19 17:16:09

标签: python pandas dataframe

我在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'>

2 个答案:

答案 0 :(得分:2)

df1['column'] = df1['column'].astype(float)

如果某行的转换失败,则会引发错误。

应用不适用于现场,而是返回您在此行中放弃的系列:

df1['column'].apply(make_float)

答案 1 :(得分:1)

除了Yakym的解决方案,你也可以这样做 -

df['column'] += 0.0