我试图将Dollar Amount列格式化为逗号数千分隔符以便于查看,但我还没有弄明白。有人可以给我指路吗?
import pandas as pd
df = pd.read_excel('filename.xlsx')
df['Dollar Amount'].head()
Index Dollar Amount
0 5721.48
1 4000.00
2 4769.00
3 824.07
4 643.60
5 620.00
Name: Dollar Amount, dtype: float64
答案 0 :(得分:1)
请注意,它会将您的float
类型转换为object
df.DollarAmount.apply(lambda x : "{:,}".format(x))
Out[509]:
0 5,721.48
1 4,000.0
2 4,769.0
3 824.07
4 643.6
5 620.0
Name: DollarAmount, dtype: object
答案 1 :(得分:1)
使用地图:
df['Dollar Amount'] = df['Dollar Amount'].map("{:,}".format)
您还可以使用更好的样式,并让您在一行中完成所有样式:
df = df.style.format({'Dollar Amount': "{:,}"})
答案 2 :(得分:0)
这是使用locale
的解决方案可能有所帮助,只要您将数字格式化为字符串即可:
import pandas as pd
import locale as lc
# Get the list of all locale options
all_locales = lc.locale_alias
# I'll use US conventions since that's what you mentioned in your question
lc.setlocale(lc.LC_ALL,all_locales["en_us"])
df = pd.DataFrame({"Dollar Amount":[1000, 2000000, 2500.01]})
df["Dollars Formatted"] = df["Dollar Amount"].apply(lambda x: "$"+lc.format("%.2f",x,True))
关于locale
的便利之处在于,如果需要,您可以轻松地在不同的数字约定之间进行更改,并且它将继续为数百万和数十亿个分隔符应用这些约定。
答案 3 :(得分:0)
如果您需要在特定列中插入数千个逗号分隔符,然后删除小数位:
A B
0 0.21 1000.0
1 0.01 2000000.0
2 0.66 1000.0
3 0.21 330000.0
之前:
lst = list(df.columns)
lst.remove('A')
for c in lst:
df[c] = df[c].astype(int).apply(lambda x: f'{x:,}')
对于“ Col B”,请插入逗号分隔符并删除小数点后位置:对上述 YOBEN_S的代码稍作调整即可:
A B
0 0.21 1,000
1 0.01 2,000,000
2 0.66 1,000
3 0.21 330,000
之后:
numpy
答案 4 :(得分:0)
这是获取千位分隔符的更可笑的方法。
df['Dollar Amount']=df['Dollar Amount'].apply('{:,}'.format)