将数据集从字符串转换为浮点错误

时间:2017-06-10 21:34:43

标签: pandas numpy

我有一个包含3列的数据集。在第1行代码中,我替换了'%'空值。在第2行中,我将international_students列字符串值转换为浮点数。

如果我运行一次代码,那一切都很好。但是,如果我运行代码两次,我会收到一个错误:"只能使用带有字符串值的.str访问器,它在pandas"中使用np.object_ dtype。 我认为这是因为专栏已经变成浮动了。

如何编写代码以便我可以多次运行它而不会出现错误?

df = pd.DataFrame({'university': ['harvard', 'cambridge', 'GT'],
                 'international_students': ['28%', '33%', '55%'],
                 index=['0', '1', '2']})

[line1]: df['international_students'] = df['international_students'].str.replace('%', '')
[line2]: df['international_students'] = df['international_students'].astype(np.float)   

1 个答案:

答案 0 :(得分:1)

运行一次代码后,您已经将值转换为np.float s,因此再次运行str.replace肯定会失败,如预期的那样。

如果您想多次执行这些操作,我建议您使用df.copy()创建数据副本。

实施例

original_df = pd.DataFrame({'university': ['harvard', 'cambridge', 'GT'],
                 'international_students': ['28%', '33%', '55%']},
                 index=['0', '1', '2'])

# use this copy for your operations involving using the international_student field
# as floats
odf_cp1 = original_df.copy()
odf_cp1['international_students'] = odf_cp1['international_students'].str.replace('%', '')
odf_cp1['international_students'] = odf_cp1['international_students'].astype(np.float)