以下是我一直在使用np.NaN替换某些值的代码。我的问题是如何更换' 47614750_h'在索引111处具有np.NaN。我可以直接使用drop_list执行此操作,但是,我需要使用以' _h'结尾的不同值来迭代它。在许多文件,并希望自动执行此操作。 我已经尝试了一些关于正则表达式的搜索,因为它似乎要走了,但找不到我需要的东西。
drop_list = ['dash_code', 'SONIC WELD']
df_clean.replace(drop_list, np.NaN).tail(10)
DASH_CODE Name Quantity
107 1011567 .156 MALE BULLET TERM INSUL 1.0
108 102066901 .032 X .187 FEMALE Q.D. TERM. 1.0
109 105137901 TERM,RING,10-12AWG,INSULATED 1.0
110 101919701 1/4 RING TERM INSUL 2.0
111 47614750001_h HARNESS, MAIN, AC, LIO 1.0
112 NaN NaN 19.0
113 7685 5/16 RING TERM INSUL. 1.0
114 102521601 CLIP,HARNESS 2.0
115 47614808001 CAP, RESISTOR, TERMINATION 1.0
116 103749801 RECPT, DEUTSCH, DTM04-4P 1.0
答案 0 :(得分:2)
尝试使用pd.to_numeric
将所有行转换为float可能会更快:
In [11]: pd.to_numeric(df.DASH_CODE, errors='coerce')
Out[11]:
0 1.011567e+06
1 1.020669e+08
2 1.051379e+08
3 1.019197e+08
4 NaN
5 NaN
6 7.685000e+03
7 1.025216e+08
8 4.761481e+10
9 1.037498e+08
Name: DASH_CODE, dtype: float64
In [12]: df["DASH_CODE"] = pd.to_numeric(df["DASH_CODE"], errors='coerce')
答案 1 :(得分:1)
您可以将pd.Series.apply
用于lambda:
df['DASH_CODE'] = df['DASH_CODE'].apply(lambda x: np.NaN if x.endswith('_h') else x)
调用Series的值函数。可以是ufunc(NumPy函数 这适用于整个Series)或仅适用于Python函数 适用于单一值