所以我基本上得到了这个:
, pct_intl_student
2879 %
2880 9%
2881 NaN
2882 1%
2883 NaN
Name: pct_intl_student, Length: 2884, dtype: object
是否可以通过一些简单的方法将所有字符串中的百分号更改为十进制数?基本上这个:
, pct_intl_student
2979 0
2880 0.09
2881 NaN
2882 0.01
2883 NaN
Name: pct_intl_student, Length: 2884, dtype: object
我确实需要NaN值保持不变,之后它们将被转换为平均百分比数.问题还在于NaN值应该全部保持为NaN,而仅包含字符串’%’的行需要变为0.
我试过了:
df['pct_intl_student'] = df['pct_intl_student'].str.rstrip('%').astype('float') / 100.0
但这引发了这个错误:
ValueError: Could not convert string to float:
所以我现在很茫然
希望有人可以帮助我.
解决方法:
这是一个更好地描述您的问题的示例:
df = pd.DataFrame({"a": ["9%", "10%", np.nan, '%']})
print(df)
# a
#0 9%
#1 10%
#2 NaN
#3 %
您希望字符串%变为值0.
一种方法是更改代码以使用str.replace而不是str.strip.在这里,我将用.0替换%s
df['a'].str.replace(r'%', r'.0').astype('float') / 100.0
#0 0.09
#1 0.10
#2 NaN
#3 0.00
#Name: a, dtype: float64
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。