python - 如果列的标题包含“价格”,则 Python/Pandas 格式化列的值
问题描述
使用 pandas,我已经阅读了一个.xlsx 文件,其中包含 4 列:ID、产品、买入价和卖出价。
我想通过以下方式在标题中包含“价格”的列下格式化值:
1399 将变为 $1,399.00
1538.9 将变为 $1,538.90
我了解如何处理列标题并施加所需的条件,但我不知道如何设置值本身的格式。这是我走了多远:
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
我怎样才能做到这一点?
解决方案
尝试:
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 个小数点,变为美分。