我有一个pandas DataFrame,它有一个dtype datetime列:
import pandas as pd
# Mock-up data
df = pd.DataFrame({'year': [2015, 2016],
'month': [2, 3],
'day': [4, 5]})
df = pd.to_datetime(df)
print(df)
# 0 2015-02-04
# 1 2016-03-05
# dtype: datetime64[ns]
我想使用.to_markdown()
方法来显示这个DataFrame。
但是,.to_markdown()
方法以科学计数法显示日期时间:
print(df.to_markdown())
# | | 0 |
# |---:|------------:|
# | 0 | 1.42301e+18 |
# | 1 | 1.45714e+18 |
有没有一种方法可以让.to_markdown()
方法以更易于阅读的方式显示这些日期?.to_latex()
,.to_csv()
和.to_string()
方法已经这样做了:
# Other .to_ methods behave as desired, eg.
print(df.to_latex())
# \begin{tabular}{ll}
# \toprule
# {} & 0 \\
# \midrule
# 0 & 2015-02-04 \\
# 1 & 2016-03-05 \\
# \bottomrule
# \end{tabular}
pandas版本:1.3.2
列表版本:0.8.9
2条答案
按热度按时间y1aodyip1#
.to_markdown()
方法使用了tabulate
包。floatfmt
命名参数可以用来控制浮点数的格式,但我看不出它在这里有什么用处。我目前能找到的最好的解决方案是在调用
.to_markdown()
方法之前将datetime列格式化为字符串列:r6vfmomb2#
到目前为止,格式化时间戳的功能是一个开放的增强功能:https://github.com/astanin/python-tabulate/issues/67
在实现之前,如果 Dataframe 包含多个列,它可以(只是)将timestamp列转换为文本(类似于@jwalton所做的):