首页 > 解决方案 > 如何使用 pandas python 创建时间组

问题描述

在这里,我有一个数据集,其中包含三个带有日期和时间的输入。在这里,我不是在模式时间收集我的数据。在这里我首先想要的是把我的开始时间设置为 0 并将其他时间转换为分钟。我的代码是:

data = pd.read_csv('data6.csv',"," )
data['date'] = pd.to_datetime(data['date'] + " " + data['time'], format='%d/%m/%Y %H:%M:%S')

lastday = data.loc[0, 'date']
def convert_time(x):
  global lastday
  if x.date() == lastday.date():
    tm = x - lastday
    return tm.total_seconds()/60
else:
    lastday = x
    return 0

 data['time'] = data['date'].apply(convert_time)

然后我得到了结果:

在此处输入图像描述

但我所期望的是:我想从开始时间 0 开始设置每分钟的时间,然后如果列当时没有值,则输入 0 值。如果附加了值,则将值与时间列一起放入以分钟为单位。

如果是新的一天,则再次将开始时间设置为 0,然后以分钟为单位开始值。

这就像一分钟数据的时间组。

   Date        time in min       X1          X2       X3
   10/3/2018     1               63          0        0
             2
             3
             4         if no values then put 0 values into that
             5                 column till the values available 
             6        Then put it that column values
             7
             8
             9
             10
             11
             12
             13
  10/4/2018  0            120      30       60
             1             0       0        0

我的 csv 文件:

我的 .csv 文件

我的 csv 链接:

我的.csv

新代码后,我的时间显示:

在此处输入图像描述

标签: pythonpandastime

解决方案


Pandas 有这方面的功能;resample从日期时间索引。如果您的数据在 1 分钟内有多个值,则必须提供聚合功能。下面的示例将对这些值求和,很容易改变它。

如果这不是您想要的,请纠正我。

代码

# Read CSV
csv_url = 'https://docs.google.com/spreadsheets/d/1WWq1qhqi4bGzNir_svQV7VstBkGbocToipPCY83Cclc/gviz/tq?tqx=out:csv&sheet=1512153575'
data = pd.read_csv(csv_url)
data['date'] = pd.to_datetime(data['date'] + " " + data['time'], format='%d/%m/%Y %H:%M:%S')

# Resample to 1 minute (T is minute)
df = data.set_index('date') \
    .resample('1T') \
    .sum() \
    .fillna(0)

# Optional ugly one-liner to start index at 0, and 1 row per minute, restart at day start
df.index = ((df.index - pd.to_datetime(df.index.date)).total_seconds() / 60).astype(int)

输出

df.head()

                    x1  x2  x3  Unnamed: 5  Unnamed: 6  Unnamed: 7
date                        
2018-03-10 06:15:00 63  0   0   0.0 0.0 0.0
2018-03-10 06:16:00 0   0   0   0.0 0.0 0.0
2018-03-10 06:17:00 0   0   0   0.0 0.0 0.0
2018-03-10 06:18:00 0   0   0   0.0 0.0 0.0
2018-03-10 06:19:00 0   0   0   0.0 0.0 0.0

输出 2 带有丑陋的单线

    x1  x2  x3  Unnamed: 5  Unnamed: 6  Unnamed: 7
date                        
0   63  0   0   0.0 0.0 0.0
1   0   0   0   0.0 0.0 0.0
2   0   0   0   0.0 0.0 0.0
3   0   0   0   0.0 0.0 0.0
4   0   0   0   0.0 0.0 0.0
5   0   0   0   0.0 0.0 0.0

推荐阅读