【发布时间】:2022-12-29 20:50:28
【问题描述】:
如何将此列值(主要是整数和一些字符串)转换为所有整数。
该列看起来像这样,
x1
___
128455551
92571902
123125
985166
np.NaN
2241
1.50000MMM
2.5255MMM
1.2255MMMM
np.NaN
...
我希望它看起来像这样,其中带有 MMM 的行、字符被删除,数字乘以十亿 (10**9) 并转换为整数。
有 MMMM 的行,删除字符并将数字乘以万亿 (10**12) 并转换为整数。
基本上每个 M 表示 1,000。还有其他列,所以我不能删除 np.NaN。
x1
___
128455551
92571902
123125
985166
np.NaN
2241
1500000000
2525500000
1225500000000
np.NaN
...
我试过这个,
df['x1'] =np.where(df.x1.astype(str).str.contains('MMM'), (df.x1.str.replace('MMM', '').astype(float) * 10**9).astype(int), df.x1)
当我只使用 2 行时它工作正常,但是当我使用整个数据帧时我得到这个错误,IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer。
我如何解决它?
【问题讨论】: