Pandas字符串列日期时间格式

oxf4rvwz  于 9个月前  发布在  其他
关注(0)|答案(2)|浏览(105)

给定下面的框架,如何将所有列的日期时间格式从“2023-12-11 00:00:00”更改为“2023-12-11”?
当我打印一个框架时,列标题显示为“2023-12-11”,但当我连接两个框架时,列标题变为“2023-12-11 00:00:00”。

>>> positions.info()
<class 'pandas.core.frame.DataFrame'>
Index: 5 entries, EUR_micro to MXP
Data columns (total 5 columns):
 #   Column               Non-Null Count  Dtype
---  ------               --------------  -----
 0   2023-12-11 00:00:00  5 non-null      int64
 1   2023-12-12 00:00:00  5 non-null      int64
 2   2023-12-13 00:00:00  5 non-null      int64
 3   2023-12-14 00:00:00  5 non-null      int64
 4   2023-12-15 00:00:00  5 non-null      int64
dtypes: int64(5)
memory usage: 240.0+ bytes

>>> print(positions)
             2023-12-11  2023-12-12  2023-12-13  2023-12-14  2023-12-15
EUR_micro            -1          -1          -1          -1          -1
GOLD_micro           -1          -1          -1          -1          -1
SP500_micro           0           1           1           1           1
DAX                   1           1           1           1           1
MXP                   1           1           1           1           1

字符串

ego6inou

ego6inou1#

示例

我想这就是你所说的情况。

import pandas as pd
cols = pd.date_range('2020-01-01', '2020-01-03')
df = pd.DataFrame([[1, 2, 3], [5, 6, 7]], columns=cols)

字符串
DF
x1c 0d1x的数据
df有DatetimeIndex列。
但是如果你做字符串列,他们得到00:00:00

df['col1'] = [4, 8]


DF



事实上,它们都有00:00:00,所以它们不是生成的,而是显示被忽略的内容。

验证码

使用isinstance检查日期时间并转换“%Y-%m-%d”格式

from datetime import datetime
df.columns = df.columns.map(lambda x: x.strftime('%Y-%m-%d') if isinstance(x, datetime)  else x)


DF

1yjd4xko

1yjd4xko2#

这是我的尝试。

import pandas as pd
import datetime

data = {
    datetime.datetime.strptime('2023-12-11', '%Y-%m-%d'): [-1, -1, 0, 1, 1],
    datetime.datetime.strptime('2023-12-12', '%Y-%m-%d'): [-1, -1, 1, 1, 1],
    
}

index = ['EUR_micro', 'GOLD_micro', 'SP500_micro', 'DAX', 'MXP']

df = pd.DataFrame(data, index=index)

df.info()
 0   2023-12-11 00:00:00  5 non-null      int64
 1   2023-12-12 00:00:00  5 non-null      int64

字符串
将列从datetime对象转换为字符串

df = df.rename(columns=lambda x: x.strftime('%Y-%m-%d'))
df.info()
#   Column      Non-Null Count  Dtype
---  ------      --------------  -----
 0   2023-12-11  5 non-null      int64
 1   2023-12-12  5 non-null      int64

相关问题