[英]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)
您的代码几乎到达那里,您只需要在调用中调用map
以apply
(这将为每一列执行):
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.