我想使用索引的自定义格式显示 DataFrame
。
我知道如何使用某种格式将DatetimeIndex
转换为字符串,并且我也知道0.17.1中引入的好styling。然而,样式机制似乎并没有提供一种自定义格式索引本身的方法(或者我错过了什么?)。
这是一个简单的例子
In[10]:
df = pd.DataFrame(
index=pd.DatetimeIndex(start='2017-01-01', freq='D', periods=3),
columns=['v'],
data=np.arange(3)
)
df
Out[10]:
v
2017-01-01 0
2017-01-02 1
2017-01-03 2
In[11]:
df.index.format(formatter=lambda t: f'{t:%Y-%m-%d %a}')
Out[11]:
['2017-01-01 Sun', '2017-01-02 Mon', '2017-01-03 Tue']
我希望能够将df
显示为:
Out[10]:
v
2017-01-01 Sun 0
2017-01-02 Mon 1
2017-01-03 Tue 2
当然,一种不优雅的方式是:
def dow_display(df):
df = df.copy()
df.index = df.index.format(formatter=lambda t: f'{t:%Y-%m-%d %a}')
return df
并在需要时转换df
以显示,但我觉得非常糟糕。使用样式功能会更好。
答案 0 :(得分:0)
我很想添加一个新列:
In [11]: df.index.weekday_name
Out[11]: Index(['Sunday', 'Monday', 'Tuesday'], dtype='object')
In [12]: df.index.weekday_name.str[:3]
Out[12]: Index(['Sun', 'Mon', 'Tue'], dtype='object')
In [13]: df["weekday"] = df.index.weekday_name.str[:3]
In [14]: df
Out[14]:
v weekday
2017-01-01 0 Sun
2017-01-02 1 Mon
2017-01-03 2 Tue
答案 1 :(得分:0)
我只能使用字符串构成格式......
df.index=df.index.astype(str)+' '+df.index.weekday_name.str[:3]
df
Out[1108]:
v
2017-01-01 Sun 0
2017-01-02 Mon 1
2017-01-03 Tue 2