如何在使用pd.to_datetime()后,要么更改日期,要么将其去除?

2024-10-01 09:22:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个df,如下所示:

Datum   Dates   Time    Menge   day month
1/1/2018 0:00   2018-01-01  00:00:00    19.5    1   1
1/1/2018 0:15   2018-01-01  00:15:00    19.0    1   1
1/1/2018 0:30   2018-01-01  00:30:00    19.5    1   1
1/1/2018 0:45   2018-01-01  00:45:00    19.5    1   1
1/1/2018 1:00   2018-01-01  01:00:00    21.0    1   1
1/1/2018 1:15   2018-01-01  01:15:00    19.5    1   1
1/1/2018 1:30   2018-01-01  01:30:00    20.0    1   1
1/1/2018 1:45   2018-01-01  01:45:00    23.0    1   1
1/1/2018 2:00   2018-01-01  02:00:00    20.5    1   1
1/1/2018 2:15   2018-01-01  02:15:00    20.5    1   1

其数据类型为:

Datum     object
Dates     object
Time      object
Menge    float64
day        int64
month      int64
dtype: object

我想计算一些东西,比如小时平均值、日平均值、月平均值,为此,我必须转换DatesTime列的类型。为此,我做了:

data_nan_dropped['Dates'] = pd.to_datetime(data_nan_dropped.Dates)
data_nan_dropped.Time = pd.to_datetime(data_nan_dropped.Time, format='%H:%M:%S')

将我的df转换为:

Datum   Dates   Time    Menge   day month
1/1/2018 0:00   2018-01-01 00:00:00 1900-01-01 00:00:00 19.5    1   1
1/1/2018 0:15   2018-01-01 00:00:00 1900-01-01 00:15:00 19.0    1   1
1/1/2018 0:30   2018-01-01 00:00:00 1900-01-01 00:30:00 19.5    1   1
1/1/2018 0:45   2018-01-01 00:00:00 1900-01-01 00:45:00 19.5    1   1
1/1/2018 1:00   2018-01-01 00:00:00 1900-01-01 01:00:00 21.0    1   1
1/1/2018 1:15   2018-01-01 00:00:00 1900-01-01 01:15:00 19.5    1   1
1/1/2018 1:30   2018-01-01 00:00:00 1900-01-01 01:30:00 20.0    1   1
1/1/2018 1:45   2018-01-01 00:00:00 1900-01-01 01:45:00 23.0    1   1
1/1/2018 2:00   2018-01-01 00:00:00 1900-01-01 02:00:00 20.5    1   1
1/1/2018 2:15   2018-01-01 00:00:00 1900-01-01 02:15:00 20.5    1   1

现在,在Time列中,时间被转换成1900-01-01的形式。我不想这样

如果可能的话,我想要以下之一:

  1. 无法将Time列转换为datetime64[ns],而不显示日期

  1. Datum列中的日期将显示在此处,而不是 1900-01-01

我怎样才能做到这一点

预期输出:

 Datum  Dates   Time    Menge   day month
    1/1/2018 0:00   2018-01-01 00:00:00 2018-01-01 00:00:00 19.5    1   1
    1/1/2018 0:15   2018-01-01 00:00:00 2018-01-01 00:15:00 19.0    1   1
    1/1/2018 0:30   2018-01-01 00:00:00 2018-01-01 00:30:00 19.5    1   1
    1/1/2018 0:45   2018-01-01 00:00:00 2018-01-01 00:45:00 19.5    1   1
    1/1/2018 1:00   2018-01-01 00:00:00 2018-01-01 01:00:00 21.0    1   1
    1/1/2018 1:15   2018-01-01 00:00:00 2018-01-01 01:15:00 19.5    1   1
    1/1/2018 1:30   2018-01-01 00:00:00 2018-01-01 01:30:00 20.0    1   1
    1/1/2018 1:45   2018-01-01 00:00:00 2018-01-01 01:45:00 23.0    1   1
    1/1/2018 2:00   2018-01-01 00:00:00 2018-01-01 02:00:00 20.5    1   1
    1/1/2018 2:15   2018-01-01 00:00:00 2018-01-01 02:15:00 20.5    1   1

Tags: todfdataobjecttimenan平均值pd
1条回答
网友
1楼 · 发布于 2024-10-01 09:22:22

如果我通过查看您的预期输出正确理解您,那么我们可以使用Datum列来创建正确的Time列:

df['Dates'] = pd.to_datetime(df['Dates'])
df['Time'] = pd.to_datetime(df['Datum'], format='%d/%m/%Y %H:%M')

           Datum      Dates                Time  Menge  day  month
0  1/1/2018 0:00 2018-01-01 2018-01-01 00:00:00   19.5    1      1
1  1/1/2018 0:15 2018-01-01 2018-01-01 00:15:00   19.0    1      1
2  1/1/2018 0:30 2018-01-01 2018-01-01 00:30:00   19.5    1      1
3  1/1/2018 0:45 2018-01-01 2018-01-01 00:45:00   19.5    1      1
4  1/1/2018 1:00 2018-01-01 2018-01-01 01:00:00   21.0    1      1
5  1/1/2018 1:15 2018-01-01 2018-01-01 01:15:00   19.5    1      1
6  1/1/2018 1:30 2018-01-01 2018-01-01 01:30:00   20.0    1      1
7  1/1/2018 1:45 2018-01-01 2018-01-01 01:45:00   23.0    1      1
8  1/1/2018 2:00 2018-01-01 2018-01-01 02:00:00   20.5    1      1
9  1/1/2018 2:15 2018-01-01 2018-01-01 02:15:00   20.5    1      1

相关问题 更多 >