【发布时间】:2021-12-19 09:29:00
【问题描述】:
我正在尝试删除使其成为强字符串的部分字符串,以便它可以成为整数。虽然,我还需要考虑到字符串的变化。
我试图把它放到一个函数中;这是我所做的:
import numpy as np
def rem(x):
data = []
for i in x:
if "m" in i:
data.append(i.replace(".00m", '000000'))
elif "Th" in i:
data.append(i.replace("Th.", '000'))
return data
data_array = np.array(['£67.50m', '£63.00m', '£49.50m','£90Th.', '£720Th.'], dtype=object)
rem(data_array)
>['£67.50m', '£63000000', '£49.50m', '£90000', '£720000']
我如何考虑在m 之前我也会有 0-9 的数字?
我已经在我更大的数据框中尝试过这个,但我收到以下错误:
TypeError: 'float' 类型的参数不可迭代
我假设这是因为该函数没有考虑到.50m, .20m ...?
使用@Ptit Xav 建议:
def rem(x):
data = []
for i in x:
if "m" in i:
xi = re.sub("[^\d]", "", i)
data.append(int(xi)*10000)
elif "Th" in i:
hi = re.sub("[^\d]", "", i)
data.append(int(hi)*1000)
return data
【问题讨论】:
-
@Mahrkeenerh 不,因为这只会删除字符串。我要求删除和替换
-
您应该删除不需要的字符,转换为浮点数,然后乘以 1000 或 1000000,然后再转换回字符串,并在开头添加货币。
-
@PtitXav 这是一个有趣的方法,我会试试的!
-
您要删除和替换究竟是什么?好像你没有说完你的句子
标签: python