Amtindoccurre
1008.59(此值后面有右空格(
1008.59-
需要以适当的格式格式化这些值,如Pandas数据帧中的1008.59(没有任何右侧空间(和-1008.59
有人能告诉我怎么做吗?
谢谢DS-
您可以将.str.replace()
与regex一起使用来解析带有尾随符号和空格的浮点数,并将符号和空格放在前面。然后使用.str.strip()
移除任何剩余空间:
data = {'val': ['1008.59 ', '1008.59-', '57,039.54 ', '4,232.49 ', '4,191.59-', '1,257,039.54 ', '2,257,039.54-']}
df = pd.DataFrame(data)
df['val'] = df['val'].str.replace(r'(d+(?:,d+)*(?:.d+)?)(s|-)', r'21', regex=True).str.strip()
结果:
print(df)
val
0 1008.59
1 -1008.59
2 57,039.54
3 4,232.49
4 -4,191.59
5 1,257,039.54
6 -2,257,039.54
如果您也想删除千个分隔符,
,您可以使用:
df['val'].str.replace(r'(d+(?:,d+)*(?:.d+)?)(s|-)', r'21', regex=True).str.strip().str.replace(',', '', regex=True)
结果:
print(df)
val
0 1008.59
1 -1008.59
2 57039.54
3 4232.49
4 -4191.59
5 1257039.54
6 -2257039.54
如果您想进一步将数字从字符串转换为数值(浮点型(,您可以使用:
df['val'] = df['val'].str.replace(r'(d+(?:,d+)*(?:.d+)?)(s|-)', r'21', regex=True).str.strip().str.replace(',', '', regex=True).astype(float)