重复数天(熊猫)

vol*_*olt 6 python pandas

如何在熊猫的数据框中迭代几天?

例:

我的数据框:

                                   time  consumption
time
2016-10-17 09:00:00 2016-10-17 09:00:00  2754.483333
2016-10-17 10:00:00 2016-10-17 10:00:00  2135.966666
2016-10-17 11:00:00 2016-10-17 11:00:00  1497.716666
2016-10-17 12:00:00 2016-10-17 12:00:00   448.100000
2016-10-24 09:00:00 2016-10-24 09:00:00  1527.716666
2016-10-24 10:00:00 2016-10-24 10:00:00  1219.833333
2016-10-24 11:00:00 2016-10-24 11:00:00  1284.350000
2016-10-24 12:00:00 2016-10-24 12:00:00  14195.633333
2016-10-31 09:00:00 2016-10-31 09:00:00  2120.933333
2016-10-31 10:00:00 2016-10-31 10:00:00  1630.700000
2016-10-31 11:00:00 2016-10-31 11:00:00  1241.866666
2016-10-31 12:00:00 2016-10-31 12:00:00  1156.266666
Run Code Online (Sandbox Code Playgroud)

伪代码:

for day in df:
    print day
Run Code Online (Sandbox Code Playgroud)

第一次迭代返回:

                                   time  consumption
time
2016-10-17 09:00:00 2016-10-17 09:00:00  2754.483333
2016-10-17 10:00:00 2016-10-17 10:00:00  2135.966666
2016-10-17 11:00:00 2016-10-17 11:00:00  1497.716666
2016-10-17 12:00:00 2016-10-17 12:00:00   448.100000
Run Code Online (Sandbox Code Playgroud)

第二次迭代返回:

2016-10-24 09:00:00 2016-10-24 09:00:00  1527.716666
2016-10-24 10:00:00 2016-10-24 10:00:00  1219.833333
2016-10-24 11:00:00 2016-10-24 11:00:00  1284.350000
2016-10-24 12:00:00 2016-10-24 12:00:00  14195.633333
Run Code Online (Sandbox Code Playgroud)

第三次迭代返回:

2016-10-31 09:00:00 2016-10-31 09:00:00  2120.933333
2016-10-31 10:00:00 2016-10-31 10:00:00  1630.700000
2016-10-31 11:00:00 2016-10-31 11:00:00  1241.866666
2016-10-31 12:00:00 2016-10-31 12:00:00  1156.266666
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 7

使用groupbydate,什么是有点不同,因为day

#groupby by index date
for idx, day in df.groupby(df.index.date):
    print (day)
                                   time  consumption
time                                                
2016-10-17 09:00:00 2016-10-17 09:00:00  2754.483333
2016-10-17 10:00:00 2016-10-17 10:00:00  2135.966666
2016-10-17 11:00:00 2016-10-17 11:00:00  1497.716666
2016-10-17 12:00:00 2016-10-17 12:00:00   448.100000
                                   time   consumption
time                                                 
2016-10-24 09:00:00 2016-10-24 09:00:00   1527.716666
2016-10-24 10:00:00 2016-10-24 10:00:00   1219.833333
2016-10-24 11:00:00 2016-10-24 11:00:00   1284.350000
2016-10-24 12:00:00 2016-10-24 12:00:00  14195.633333
                                   time  consumption
time                                                
2016-10-31 09:00:00 2016-10-31 09:00:00  2120.933333
2016-10-31 10:00:00 2016-10-31 10:00:00  1630.700000
2016-10-31 11:00:00 2016-10-31 11:00:00  1241.866666
2016-10-31 12:00:00 2016-10-31 12:00:00  1156.266666
Run Code Online (Sandbox Code Playgroud)

要么:

#groupby by column time
for idx, day in df.groupby(df.time.dt.date):
    print (day)
                                   time  consumption
time                                                
2016-10-17 09:00:00 2016-10-17 09:00:00  2754.483333
2016-10-17 10:00:00 2016-10-17 10:00:00  2135.966666
2016-10-17 11:00:00 2016-10-17 11:00:00  1497.716666
2016-10-17 12:00:00 2016-10-17 12:00:00   448.100000
                                   time   consumption
time                                                 
2016-10-24 09:00:00 2016-10-24 09:00:00   1527.716666
2016-10-24 10:00:00 2016-10-24 10:00:00   1219.833333
2016-10-24 11:00:00 2016-10-24 11:00:00   1284.350000
2016-10-24 12:00:00 2016-10-24 12:00:00  14195.633333
                                   time  consumption
time                                                
2016-10-31 09:00:00 2016-10-31 09:00:00  2120.933333
2016-10-31 10:00:00 2016-10-31 10:00:00  1630.700000
2016-10-31 11:00:00 2016-10-31 11:00:00  1241.866666
2016-10-31 12:00:00 2016-10-31 12:00:00  1156.266666
Run Code Online (Sandbox Code Playgroud)

可以检查前2行的差异是否有所不同month

for idx, day in df.groupby(df.index.day):
    print (day)
                                    time  consumption
time                                                
2016-09-17 09:00:00 2016-10-17 09:00:00  2754.483333
2016-09-17 10:00:00 2016-10-17 10:00:00  2135.966666
2016-10-17 11:00:00 2016-10-17 11:00:00  1497.716666
2016-10-17 12:00:00 2016-10-17 12:00:00   448.100000
                                   time   consumption
time                                                 
2016-10-24 09:00:00 2016-10-24 09:00:00   1527.716666
2016-10-24 10:00:00 2016-10-24 10:00:00   1219.833333
2016-10-24 11:00:00 2016-10-24 11:00:00   1284.350000
2016-10-24 12:00:00 2016-10-24 12:00:00  14195.633333
                                   time  consumption
time                                                
2016-10-31 09:00:00 2016-10-31 09:00:00  2120.933333
2016-10-31 10:00:00 2016-10-31 10:00:00  1630.700000
2016-10-31 11:00:00 2016-10-31 11:00:00  1241.866666
2016-10-31 12:00:00 2016-10-31 12:00:00  1156.266666
Run Code Online (Sandbox Code Playgroud)
for idx, day in df.groupby(df.index.date):
    print (day)
                                   time  consumption
time                                                
2016-09-17 09:00:00 2016-10-17 09:00:00  2754.483333
2016-09-17 10:00:00 2016-10-17 10:00:00  2135.966666
                                   time  consumption
time                                                
2016-10-17 11:00:00 2016-10-17 11:00:00  1497.716666
2016-10-17 12:00:00 2016-10-17 12:00:00   448.100000
                                   time   consumption
time                                                 
2016-10-24 09:00:00 2016-10-24 09:00:00   1527.716666
2016-10-24 10:00:00 2016-10-24 10:00:00   1219.833333
2016-10-24 11:00:00 2016-10-24 11:00:00   1284.350000
2016-10-24 12:00:00 2016-10-24 12:00:00  14195.633333
                                   time  consumption
time                                                
2016-10-31 09:00:00 2016-10-31 09:00:00  2120.933333
2016-10-31 10:00:00 2016-10-31 10:00:00  1630.700000
2016-10-31 11:00:00 2016-10-31 11:00:00  1241.866666
2016-10-31 12:00:00 2016-10-31 12:00:00  1156.266666
Run Code Online (Sandbox Code Playgroud)