Python 基于条件的格式编号

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

我是python新手,正在努力解决一个简单的格式化问题。我有一个包含两列的表-度量和值。我希望根据度量名称(在“度量”列中)设置值的格式。似乎无法让它工作。我希望数字显示为#,######和名称为“Pct…”的度量值为#.#%。代码运行正常,但未进行任何更改。此外,一些值可能为null。不确定如何处理

# 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%