迭代几天(熊猫)

时间:2017-01-27 12:05:49

标签: python pandas

如何在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

伪代码:

for day in df:
    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

第二次迭代返回:

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

1 个答案:

答案 0 :(得分:4)

date使用groupbyday有点不同:

#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

或者:

#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

差异可以检查前两行是否使用不同的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
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