使用pd.to_datetime()之后如何更改日期或摆脱日期?

时间:2019-07-04 12:04:53

标签: python pandas

我有一个如下所示的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

1 个答案:

答案 0 :(得分:1)

如果我通过查看预期的输出正确地理解了您,我们可以使用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