我需要更改数据框中子列(Bill2)的值格式
我使用数据透视表功能后获得以下输出
SELECT
ISNULL(
CONVERT(
DECIMAL(10, 2),
1.0 *
(
ISNULL(Value1, 0 ) + ISNULL( Value2, 0 ) + ISNULL( Value3, 0 )
)
/
NULLIF(
ISNULL(SIGN(ABS(Value1)),0) + ISNULL(SIGN(ABS(Value2)),0) + ISNULL(SIGN(ABS(Value3)),0)
,0 )
) ,
COALESCE(Value1,Value2,Value3)
)
FROM tblFloat
data_frame4 = data_frame4.swaplevel(0,1,axis = 1).sort_index(axis = 1)
元组= [(a.strftime('%b-%y'),b)如果a!= data_frame4.columns中a,b的'All'else(a,b)]
data_frame4.columns = pd.MultiIndex.from_tuples(tuples)
我的输出:
data_frame4 = pd.pivot_table(data_frame4,
index=['PC','Geo'],
values=['Bill1', 'Bill2'],
columns=['Month'],
fill_value=0)
我想要的输出:
jan Feb
Bill1 Bill2 Bill1 Bill2
PC Geo
A Ind 1 1.28 1 1.28
B US 1 1.28 1 1.28
C Can 1 1.28 1 1.28
答案 0 :(得分:1)
首先仅使用slicers选择Bill2
列,然后使用format
用DataFrame.applymap
更改值,或者将值转换为字符串并在$
之前加上:
idx = pd.IndexSlice
df.loc[:, idx[:, 'Bill2']] = df.loc[:, idx[:, 'Bill2']].applymap('${:,.2f}'.format)
#alternative
#df.loc[:, idx[:, 'Bill2']] = '$' + df.loc[:, idx[:, 'Bill2']].astype(str)
#alternative1
#df.loc[:, (slice(None), 'Bill2')] = '$' + df.loc[:, (slice(None), 'Bill2')].astype(str)
print (df)
jan Feb
Bill1 Bill2 Bill1 Bill2
A 1 $1.28 1 $1.28
B 1 $1.28 1 $1.28
C 1 $1.28 1 $1.28