如何将这一列的值,大部分是整数,还有一些字符串,转换成全整数。
该列看起来像这样,
x1
___
128455551
92571902
123125
985166
np.NaN
2241
1.50000MMM
2.5255MMM
1.2255MMMM
np.NaN
...
我想让它看起来像这样,其中的行与MMM,字符被删除,数字乘以十亿(109),并转换为整数。
有MMMM的行,字符被丢弃,数字乘以万亿(1012)并转换为整数。
基本上,每个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行时,它工作正常,但当我使用整个 Dataframe 时,我得到这个错误,IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer
。
我该怎么补救?
3条答案
按热度按时间vx6bjr1n1#
可能的解决方案:
输出:
wbgh16ku2#
您也可以尝试以下解决方案:
t1rydlwq3#
当考虑包含
M
的字符串值时,可以将净化值乘以1000
,次数为M
(根据您的条件 "基本上每个M都意味着1,000"):