首页 > 解决方案 > 如何在 pandas 中按日期分组。我在一个日期有 48 个条目,即 30 分钟间隔

问题描述

请在下面找到输入和输出。在代码中输入,在图像中输出。输入:

    time    value      index_no     date    block_out   no_load
0   2018-07-16 00:30:00 1   2.0 2018-07-16      
1   2018-07-16 01:00:00 -1  3.0 2018-07-16   3.0    
2   2018-07-16 01:30:00 -1  4.0 2018-07-16   4.0    
3   2018-07-16 02:00:00 -1  5.0 2018-07-16   5.0    
4   2018-07-16 02:30:00 1   6.0 2018-07-16      
5   2018-07-16 03:00:00 1   7.0 2018-07-16      
6   2018-07-16 03:30:00 0   8.0 2018-07-16      8.0
7   2018-07-16 04:00:00 1   9.0 2018-07-16      
8   2018-07-16 04:30:00 -1  10.0    2018-07-16  10.0    
9   2018-07-16 05:00:00 2   11.0    2018-07-16      
10  2018-07-16 05:30:00 3   12.0    2018-07-16      
11  2018-07-16 06:00:00 2   13.0    2018-07-16      
12  2018-07-16 06:30:00 2   14.0    2018-07-16      
13  2018-07-16 07:00:00 -1  15.0    2018-07-16  15.0    
14  2018-07-16 07:30:00 1   16.0    2018-07-16      
15  2018-07-16 08:00:00 -1  17.0    2018-07-16  17.0    
16  2018-07-16 08:30:00 2   18.0    2018-07-16      
17  2018-07-16 09:00:00 2   19.0    2018-07-16      
18  2018-07-16 09:30:00 3   20.0    2018-07-16      
19  2018-07-16 10:00:00 -1  21.0    2018-07-16  21.0    

标签: pandasdata-sciencepandas-groupby

解决方案


这就是你在熊猫中按列分组的方式

import pandas as pd
import numpy as np

# Generating random data
data = np.random.randint(0, 4, 15).reshape(5, 3)

# Wrapping it with pandas DataFrame
df = pd.DataFrame(data, columns=['A', 'B', 'C'])

# Group by column 'A'
groupbys = df.groupby('A')

在您的特定问题中,您希望将'time'列拆分为'date''time'然后分组,'date'但它可能不会让您到任何地方,因为您没有定义要执行的聚合类型。

如果您不知道如何拆分“时间”列,您可以使用 map 函数并将其转换为 datetime 对象,如下所示:

def to_datetime(str):
    return datetime.strptime('2018-07-16 00:30:00', "%Y-%m-%d %H:%M:%S")

而不是像这样创建一个新列:

df['date'] = list(map(to_datetime, df['time']))

推荐阅读