我有一个包含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)
答案 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)