在 Pandas 如何反转十进制表示法?
In Pandas How To Invert Decimal Notation?
在 python3 和 pandas 中,我有一个带有浮点值的数据框,显示如下:
import pandas as pd
df_despesas = pd.read_csv("resultados/despesas_dep_est_sp_julho.csv", sep=',',encoding = 'utf-8', converters={'CNPJ': lambda x: str(x), 'cnpj_raiz_fornecedor': lambda x: str(x), 'Ano': lambda x: str(x)}, decimal=',')
#Configuration to show float with two decimals
pd.options.display.float_format = '{:,.2f}'.format
df_despesas.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 455156 entries, 0 to 455155
Data columns (total 9 columns):
Ano 455156 non-null object
CNPJ 455156 non-null object
Deputado 455156 non-null object
Fornecedor 455156 non-null object
Matricula 455156 non-null object
Mes 455156 non-null object
Tipo 455156 non-null object
Valor 455156 non-null float64
cnpj_raiz_fornecedor 455156 non-null object
dtypes: float64(1), object(8)
memory usage: 31.3+ MB
df_despesas.reset_index().Valor.head()
0 200.00
1 295.40
2 2,850.00
3 100.00
4 195.01
"${:,.2f}".format(df_despesas.Valor.sum())
'1,900,200.82'
我希望这些数字以点分隔千位并以逗号分隔美分。像这样:
0 200,00
1 295,40
2 2.850,00
3 100,00
4 195,01
'1.900.200,82'
请问有人知道我该怎么做吗?
此处回答:
How to display pandas DataFrame of floats using a format string for columns?
从那里的评论,我看到你可以简单地做
df_despesas['Valor_dollars_fmt'] = df_despesas['Valor'].map('${:,.2f}'.format)
我认为实现您正在寻找的东西的最简单方法,即 dot separating the thousands and comma the cents
是使用字符串操作。您可以创建一个新函数来执行此操作,然后使用 apply
将其应用于相应的数据框列
x = [200, 295.40, 2850, 100, 195.01]
df = pd.DataFrame(x, columns=["value"])
df.value = df.value.map('{:,.2f}'.format)
df
value
0 200.00
1 295.40
2 2,850.00
3 100.00
4 195.01
现在创建一个函数来将点更改为逗号并将逗号更改为点并将其应用于数据框列
def change_format(x):
return str(x).replace('.', '/').replace(',', '.').replace('/', ',')
df.value = df.value.apply(change_format)
df
value
0 200,00
1 295,40
2 2.850,00
3 100,00
4 195,01
在 python3 和 pandas 中,我有一个带有浮点值的数据框,显示如下:
import pandas as pd
df_despesas = pd.read_csv("resultados/despesas_dep_est_sp_julho.csv", sep=',',encoding = 'utf-8', converters={'CNPJ': lambda x: str(x), 'cnpj_raiz_fornecedor': lambda x: str(x), 'Ano': lambda x: str(x)}, decimal=',')
#Configuration to show float with two decimals
pd.options.display.float_format = '{:,.2f}'.format
df_despesas.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 455156 entries, 0 to 455155
Data columns (total 9 columns):
Ano 455156 non-null object
CNPJ 455156 non-null object
Deputado 455156 non-null object
Fornecedor 455156 non-null object
Matricula 455156 non-null object
Mes 455156 non-null object
Tipo 455156 non-null object
Valor 455156 non-null float64
cnpj_raiz_fornecedor 455156 non-null object
dtypes: float64(1), object(8)
memory usage: 31.3+ MB
df_despesas.reset_index().Valor.head()
0 200.00
1 295.40
2 2,850.00
3 100.00
4 195.01
"${:,.2f}".format(df_despesas.Valor.sum())
'1,900,200.82'
我希望这些数字以点分隔千位并以逗号分隔美分。像这样:
0 200,00
1 295,40
2 2.850,00
3 100,00
4 195,01
'1.900.200,82'
请问有人知道我该怎么做吗?
此处回答:
How to display pandas DataFrame of floats using a format string for columns?
从那里的评论,我看到你可以简单地做
df_despesas['Valor_dollars_fmt'] = df_despesas['Valor'].map('${:,.2f}'.format)
我认为实现您正在寻找的东西的最简单方法,即 dot separating the thousands and comma the cents
是使用字符串操作。您可以创建一个新函数来执行此操作,然后使用 apply
将其应用于相应的数据框列
x = [200, 295.40, 2850, 100, 195.01]
df = pd.DataFrame(x, columns=["value"])
df.value = df.value.map('{:,.2f}'.format)
df
value
0 200.00
1 295.40
2 2,850.00
3 100.00
4 195.01
现在创建一个函数来将点更改为逗号并将逗号更改为点并将其应用于数据框列
def change_format(x):
return str(x).replace('.', '/').replace(',', '.').replace('/', ',')
df.value = df.value.apply(change_format)
df
value
0 200,00
1 295,40
2 2.850,00
3 100,00
4 195,01