如何在pandas dataframe列中插入逗号作为千位分隔符?

时间:2017-11-21 02:59:04

标签: excel pandas dataframe python-3.6

我试图将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

5 个答案:

答案 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)