使用Styler的熊猫DatetimeIndex格式

时间:2018-08-26 11:04:54

标签: python pandas datetime-format

当我显示的数据框未使用Styler时,DatetimeIndex以我想要的方式显示:

In [1]: df

enter image description here

但是,当我尝试为数据框显示应用样式时,DatetimeIndex会变成我不喜欢的东西:

In [2]: df.style\
            .format({'volatility_5': '{:.1}'})\
            .bar(subset=['volatility_5'])

enter image description here

如何使DatetimeIndex再次显示YYYY-MM-DD格式?

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是将DatetimeIndex转换为string s:

level0 = df.index.get_level_values(0)
level1 = df.index.get_level_values(1).strftime('%Y-%m-%d')
mux = pd.MultiIndex.from_arrays([level0, level1], names=df.index.names)
df = df.set_index(mux) \
       .style\
       .format({'volatility_5': '{:.1}'})\
       .bar(subset=['volatility_5'])

示例

rng = pd.date_range('2017-04-03', periods=5)
df = pd.DataFrame({'date': rng, 'volatility_5': np.arange(5) * 10.293, 'ticker':['TBGI'] * 5}).set_index(['ticker','date'])
level0 = df.index.get_level_values(0)
level1 = df.index.get_level_values(1).strftime('%Y-%m-%d')
mux = pd.MultiIndex.from_arrays([level0, level1], names=df.index.names)
df = df.set_index(mux) \
       .style\
       .format({'volatility_5': '{:.1}'})\
       .bar(subset=['volatility_5'])

pic