Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python熊猫-非连续时间序列?_Python_Python 3.x_Pandas_Time Series - Fatal编程技术网

Python熊猫-非连续时间序列?

Python熊猫-非连续时间序列?,python,python-3.x,pandas,time-series,Python,Python 3.x,Pandas,Time Series,熊猫内部是否有办法创建一个时间序列,该时间序列由一段时间内每天选定的时钟时间组成?例如:让我们将2018年的所有日子作为日期,时间(时钟)为4个不同的时间,如[09:00,10:35,14:00,15:50] 所以我想要的是一个时间序列,比如: 2018-01-01 09:00 2018-01-01 10:35 2018-01-01 14:00 2018-01-01 15:50 2018-01-02 09:00 2018-01-02 10:35 2018-01-02 14:00 2018-01-

熊猫内部是否有办法创建一个时间序列,该时间序列由一段时间内每天选定的时钟时间组成?例如:让我们将2018年的所有日子作为日期,时间(时钟)为4个不同的时间,如
[09:00,10:35,14:00,15:50]

所以我想要的是一个时间序列,比如:

2018-01-01 09:00
2018-01-01 10:35
2018-01-01 14:00
2018-01-01 15:50
2018-01-02 09:00
2018-01-02 10:35
2018-01-02 14:00
2018-01-02 15:50
2018-01-03 09:00
...
蒂亚, T

您应该能够导入时间并在其中循环,以使用所需的日期格式替换日期 然后,您可以将列表输入数据框

import pandas as pd
df = pd.DataFrame({‘DateTime’: dayslist})
print(df)
您应该能够导入时间并在其中循环,以使用所需的日期格式替换日期 然后,您可以将列表输入数据框

import pandas as pd
df = pd.DataFrame({‘DateTime’: dayslist})
print(df)

您可以这样做,这比使用循环快得多:

1.)创建日期列表:

In [34]: start_dt = '2018-01-01'
# For whole year, use periods=365
In [45]: days_list = pd.date_range(pd.to_datetime(start_dt), periods=3) 
In [59]: days_list = [i.date() for i in days_list] # Keeping only date part
2.)创建一个时间列表:

In [38]: timelist = ['09:00', '10:35', '14:00', '15:50']
3.)通过重复
days\u列表中的每个元素来扩展列表
4次,每次一个:

In [60]: import numpy as np
In [61]: days_list = np.repeat(days_list, 4)
4.)通过将时间列表乘以天数列表中的唯一日期来扩展时间列表,使其具有相同的长度:

因此,因为我们在创建天数列表时使用了
periods=3
。因此,通过相同的因素扩展时间列表

In [64]: timelist = timelist * 3
5.)创建数据帧:

In [65]: df = pd.DataFrame()
In [66]: df['Date'] = days_list
In [68]: df['time'] = timelist
最终输出:

In [78]: df
Out[78]: 
          Date   time
0   2018-01-01  09:00
1   2018-01-01  10:35
2   2018-01-01  14:00
3   2018-01-01  15:50
4   2018-01-02  09:00
5   2018-01-02  10:35
6   2018-01-02  14:00
7   2018-01-02  15:50
8   2018-01-03  09:00
9   2018-01-03  10:35
10  2018-01-03  14:00
11  2018-01-03  15:50

您可以这样做,这比使用循环快得多:

1.)创建日期列表:

In [34]: start_dt = '2018-01-01'
# For whole year, use periods=365
In [45]: days_list = pd.date_range(pd.to_datetime(start_dt), periods=3) 
In [59]: days_list = [i.date() for i in days_list] # Keeping only date part
2.)创建一个时间列表:

In [38]: timelist = ['09:00', '10:35', '14:00', '15:50']
3.)通过重复
days\u列表中的每个元素来扩展列表
4次,每次一个:

In [60]: import numpy as np
In [61]: days_list = np.repeat(days_list, 4)
4.)通过将时间列表乘以天数列表中的唯一日期来扩展时间列表,使其具有相同的长度:

因此,因为我们在创建天数列表时使用了
periods=3
。因此,通过相同的因素扩展时间列表

In [64]: timelist = timelist * 3
5.)创建数据帧:

In [65]: df = pd.DataFrame()
In [66]: df['Date'] = days_list
In [68]: df['time'] = timelist
最终输出:

In [78]: df
Out[78]: 
          Date   time
0   2018-01-01  09:00
1   2018-01-01  10:35
2   2018-01-01  14:00
3   2018-01-01  15:50
4   2018-01-02  09:00
5   2018-01-02  10:35
6   2018-01-02  14:00
7   2018-01-02  15:50
8   2018-01-03  09:00
9   2018-01-03  10:35
10  2018-01-03  14:00
11  2018-01-03  15:50

尝试熊猫和熊猫的组合

将其与

# Put it into a Series

val = np.arange(0,len(filtered_hours))

Ser = pd.Series(val,index=filtered_hours)

print(Ser)



2018-01-01 00:00:00       0
2018-01-01 09:00:00       1
2018-01-01 10:35:00       2
2018-01-01 14:00:00       3
2018-01-01 15:50:00       4
2018-01-02 00:00:00       5
2018-01-02 09:00:00       6
2018-01-02 10:35:00       7
2018-01-02 14:00:00       8
2018-01-02 15:50:00       9
2018-01-03 00:00:00      10
2018-01-03 09:00:00      11
2018-01-03 10:35:00      12
2018-01-03 14:00:00      13
2018-01-03 15:50:00      14
2018-01-04 00:00:00      15
2018-01-04 09:00:00      16
2018-01-04 10:35:00      17

尝试熊猫和熊猫的组合

将其与

# Put it into a Series

val = np.arange(0,len(filtered_hours))

Ser = pd.Series(val,index=filtered_hours)

print(Ser)



2018-01-01 00:00:00       0
2018-01-01 09:00:00       1
2018-01-01 10:35:00       2
2018-01-01 14:00:00       3
2018-01-01 15:50:00       4
2018-01-02 00:00:00       5
2018-01-02 09:00:00       6
2018-01-02 10:35:00       7
2018-01-02 14:00:00       8
2018-01-02 15:50:00       9
2018-01-03 00:00:00      10
2018-01-03 09:00:00      11
2018-01-03 10:35:00      12
2018-01-03 14:00:00      13
2018-01-03 15:50:00      14
2018-01-04 00:00:00      15
2018-01-04 09:00:00      16
2018-01-04 10:35:00      17

是的,这就是我目前解决问题的方法,但我想在熊猫时间序列功能中可能有一种方法可以在没有显式循环的情况下实现同样的功能。是的,这就是我目前解决问题的方法,但我想在熊猫时间序列功能中可能有一种方法可以在没有显式循环的情况下实现同样的功能。太好了。如果有帮助,请投票并接受答案。太好了。如果有帮助,请投票并接受答案。