首页 > 解决方案 > 如果列的标题包含“价格”,则 Python/Pandas 格式化列的值

问题描述

使用 pandas,我已经阅读了一个.xlsx 文件,其中包含 4 列:ID、产品、买入价和卖出价。

我想通过以下方式在标题中包含“价格”的列下格式化值:

我了解如何处理列标题并施加所需的条件,但我不知道如何设置值本身的格式。这是我走了多远:

for col in df.columns:
   if "Price" in col:
      print("This header has 'Price' in it")
   else:
      print(col) 

ID
Name
This header has 'Price' in it
This header has 'Price' in it

我怎样才能做到这一点?

标签: pythonpandas

解决方案


尝试:

for col in df.columns:
   if "Price" in col:
       print("This header has 'Price' in it")
       df[col] = df[col].map('${:,.2f}'.format)
   else:
       print(col) 

或者,如果可以列出所有列名,请使用DataFrame.applymap

cols = df.filter(like='Price').columns
df[cols] = df[cols].applymap('${:,.2f}'.format)

在字符串格式化中,:, 将逗号作为千位分隔符,并将.2f浮点数格式化为 2 个小数点,变为美分。


推荐阅读