繁体   English   中英

使用 .loc 按名称格式化多列

[英]Formatting Multiple Columns by Name using .loc

我的目标是 state 我要应用格式的名称列列表。

被注释掉的部分理想情况下是我所追求的(这意味着直接删除注释上方的代码行),但我收到以下错误:

'DataFrame' object has no attribute 'map'` error.

有没有办法/更好的方法来实现我正在尝试的目标?

import pandas as pd

cols = ['Spend', 'Sales']
stuff=[[3, 2],[5, 6]]
df = pd.DataFrame(stuff, columns = cols)


df.loc[:, 'Spend'] ='$'+ df['Spend'].map('{:,.0f}'.format)

# list1=['Spend', 'Sales']
# df.loc[:, list1] ='$'+ df[list1].map('{:,.0f}'.format)

print(df)

您的代码几乎到达那里,您只需要在调用中调用mapapply (这将为每一列执行):

list1 = ['Spend', 'Sales']
df.loc[:, list1] = '$'+ df[list1].apply(lambda col: col.map('{:,.0f}'.format))

Output:

>>> df
  Spend Sales
0    $3    $2
1    $5    $6

您是否正在寻找以下内容:

df[list1] =['$']*2 + df[list1].astype(str)

或( 如@richardec 所建议):

df[list1] = '$' + df[list1].astype(str)

Output:

  Spend Sales
0    $3    $2
1    $5    $6

从这个线程如何使用列的格式字符串显示 pandas DataFrame 的浮点数? 我们可以学习

cols = ['Spend', 'Sales']
stuff=[[3, 2],[5, 6]]
df = pd.DataFrame(stuff, columns = cols)
list1 = ['Spend', 'Sales']
df[list1] = df[list1].applymap('${:,.2f}'.format)

output

df
   Spend  Sales
0  $3.00  $2.00
1  $5.00  $6.00

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM