我在数据框中的特殊字符有问题。例如
ID license value1 value2 value3 ...
2 a "5,120.000" 15% 45 ...
1 b "3,246.440" 10% 65 ...
4 b "1,890.220" 50% 10 ...
5 c "2,005.240" 32% 12 ...
问题是我有太多列,大约150列,如果我逐列并分别替换值,那还不行。 因此,我需要替换任何特殊字符并转换数字(此刻为字符串列)以使其浮动。
我已经尝试过这样的事情:
def drop_percent(data):
for el in data.columns:
if data[el].astype(str).str.contains('%').any():
data[el] = data[el].str.strip("%").astype(float)
return data
def drop_commas(data):
for el in data.columns:
if data[el].astype(str).str.contains(',').any():
mcd[el] = mcd[el].str.replace(',','')
if data[el].astype(str).str.contains('"').any():
mcd[el] = mcd[el].str.replace('"', '')
mcd[el] = mcd[el].astype(float)
return data
我的错误是:
AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas
答案 0 :(得分:2)
这是使用列表推导和str.replace
删除列中所有非特殊字符的简单直接的方法:
(pd.concat([df[col].astype(str).str.replace(r'\W+', '', regex=True)
for col in df.columns], 1))
license value1 value2 value3
2 a 5120000 15 45
1 b 3246440 10 65
4 b 1890220 50 10
5 c 2005240 32 12