Python 基于条件的格式编号
我是python新手,正在努力解决一个简单的格式化问题。我有一个包含两列的表-度量和值。我希望根据度量名称(在“度量”列中)设置值的格式。似乎无法让它工作。我希望数字显示为#,######和名称为“Pct…”的度量值为#.#%。代码运行正常,但未进行任何更改。此外,一些值可能为null。不确定如何处理Python 基于条件的格式编号,python,python-3.x,pandas,Python,Python 3.x,Pandas,我是python新手,正在努力解决一个简单的格式化问题。我有一个包含两列的表-度量和值。我希望根据度量名称(在“度量”列中)设置值的格式。似乎无法让它工作。我希望数字显示为#,######和名称为“Pct…”的度量值为#.#%。代码运行正常,但未进行任何更改。此外,一些值可能为null。不确定如何处理 # format numbers and percentages pct_options = ['Pct Conversion', 'Pct Gross Churn', 'Pct Net Chur
# format numbers and percentages
pct_options = ['Pct Conversion', 'Pct Gross Churn', 'Pct Net Churn']
for x in pct_options:
if x in df['metrics']:
df.value.mul(100).astype('float64').astype(str).add('%')
else:
df.value.astype('float64')
IIUC,你可以用,试试
在此处编辑可能是您想要的:
#example df
df = pd.DataFrame({'metrics': ['val', 'Pct Conversion', 'Pct Gross Churn', 'ind', 'Pct Net Churn'], 'value': [12345.5432, 0.23245436, 0.4, 13, 0.000004]})
print (df)
metrics value
0 val 12345.543200
1 Pct Conversion 0.232454
2 Pct Gross Churn 0.400000
3 ind 13.000000
4 Pct Net Churn 0.000004
#change the formatting with np.where
pct_options = ['Pct Conversion', 'Pct Gross Churn', 'Pct Net Churn']
df.value = np.where(df.metrics.isin(pct_options), df.value.mul(100).map('{:.2f}%'.format), df.value.map('{:,.2f}'.format))
metrics value
0 val 12,345.54
1 Pct Conversion 23.25%
2 Pct Gross Churn 40.00%
3 ind 13.00
4 Pct Net Churn 0.00%
请发布您想要的结果和数据帧的示例好吗?您没有对
astype()的结果做任何操作
。除非您使用copy=False,否则它不会在适当的位置运行。这似乎适用于需要转换为百分比的指标。但其他指标仍然看起来像xxxxx而不是x,xxx例如6000而不是6000。此外,我如何将百分比的小数位数限制为2位?
#example df
df = pd.DataFrame({'metrics': ['val', 'Pct Conversion', 'Pct Gross Churn', 'ind', 'Pct Net Churn'], 'value': [12345.5432, 0.23245436, 0.4, 13, 0.000004]})
print (df)
metrics value
0 val 12345.543200
1 Pct Conversion 0.232454
2 Pct Gross Churn 0.400000
3 ind 13.000000
4 Pct Net Churn 0.000004
#change the formatting with np.where
pct_options = ['Pct Conversion', 'Pct Gross Churn', 'Pct Net Churn']
df.value = np.where(df.metrics.isin(pct_options), df.value.mul(100).map('{:.2f}%'.format), df.value.map('{:,.2f}'.format))
metrics value
0 val 12,345.54
1 Pct Conversion 23.25%
2 Pct Gross Churn 40.00%
3 ind 13.00
4 Pct Net Churn 0.00%