我的数据中有一个是:
Power:
0 130
1 165
2 150
3 150
4 ?
5 198
6 220
7 215
8 225
9 ?
10 170
Run Code Online (Sandbox Code Playgroud)
我想替换每个'?' 用Nan或零。
我试过了:
data['Power'].str.replace('?', 0).astype(float)
data['Power'].str.replace('^[^\d]*', '').astype(float)
data['Power'].replace(r'\s+', np.nan, regex=True)
data['Power'].convert_objects(convert_numeric=True)
data['Power'].replace(regex=True,inplace=True,to_replace=r'\D',value=r'')
Run Code Online (Sandbox Code Playgroud)
但是这些都不起作用!
有些会产生错误,could not convert string to float而有些则不会产生任何错误,但不会更改'?'。
如果需要只替换所有非数字值以NaN使用to_numeric:
data.Power = pd.to_numeric(data.Power, errors='coerce')
print (data)
Power
0 130.0
1 165.0
2 150.0
3 150.0
4 NaN
5 198.0
6 220.0
7 215.0
8 225.0
9 NaN
10 170.0
Run Code Online (Sandbox Code Playgroud)
如果需要,0则fillna使用强制类型转换添加到int:
data.Power = pd.to_numeric(data.Power, errors='coerce').fillna(0).astype(int)
print (data)
Power
0 130
1 165
2 150
3 150
4 0
5 198
6 220
7 215
8 225
9 0
10 170
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1304 次 |
| 最近记录: |