试图将Panda Dataframe中的值格式化为-1008.59和1008.59,r显示为1008.59、1008.5

  • 本文关键字:1008 显示 -1008 Dataframe 格式化 Panda python pandas
  • 更新时间 :
  • 英文 :


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)

最新更新