将列从float转换为int时接收KeyError

时间:2017-10-01 15:26:25

标签: python pandas dataframe type-conversion

使用read_csv创建了一个pandas数据框。

然后我将第0列的列名从'Unnamed'更改为'Experiment_Number'

此列中的值是浮点数,我一直在尝试使用以下方法将它们转换为整数:

df['Experiment_Number'] = df['Experiment_Number'].astype(int)

我收到此错误:

  

KeyError:'Experiment_Number'

自昨天以来,我一直在努力,例如

df['Experiment_Number'] = df.astype({'Experiment_Number': int})

以及许多其他变体。

有人可以请求帮助,我是新手使用大熊猫,这接近放弃这个:(

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

  

我之前用它来重命名该列:

api.add_resource(Tasks, '/refer-me/api/v1.0/tasks', methods=['GET'])

这应该有效。事实上,它并不意味着你的列名中有特殊的字符/不可打印的字符。

我可以使用df.columns.values[0] = 'Experiment_Number' 提供另一个可能的建议:

df.rename

答案 1 :(得分:0)

您可以在read_csv()来电期间转换类型,然后重命名。如在

df = pandas.read_csv(filename, 
                     dtype = {'Unnamed': 'float'}, # inform read_csv this field is float
                     converters = {'Unnamed': int}) # apply the int() function
df.rename(columns = {'Unnamed' : 'Experiment_Number'}, inplace=True)

dtype并不是绝对必要的,因为在这种情况下转换器会覆盖它,但是养成为输入的每个字段始终提供dtype的习惯是明智的。例如,令人讨厌的是,pandas默认情况下如何将整数视为浮点数。此外,如果指定了dtype,您可以稍后删除转换器选项。