Python 对于if语句,如何隔离数据帧中两次之间的行?

Python 对于if语句,如何隔离数据帧中两次之间的行?,python,pandas,datetime,Python,Pandas,Datetime,我有一个数据框,其中包含一年中每小时的数据,我想在9:00和17:00之间的所有行中创建一个新行,并在同一行中添加另一行的数据(如果不在该时间范围内) 我相信我想要这样的东西 if '9.00' >= final_df.index <= '17.00': do some action else do another action 您可以使用创建一个可以在数据帧上使用的掩码。对于给定的数据,假设感兴趣的区域介于15和17之间,并且您希望将区域内的A和区域外的B相加。您

我有一个数据框,其中包含一年中每小时的数据,我想在9:00和17:00之间的所有行中创建一个新行,并在同一行中添加另一行的数据(如果不在该时间范围内)

我相信我想要这样的东西

if '9.00' >= final_df.index <= '17.00':
    do some action
else
    do another action
您可以使用创建一个可以在数据帧上使用的掩码。对于给定的数据,假设感兴趣的区域介于15和17之间,并且您希望将区域内的
A
和区域外的
B
相加。您可以通过以下方式完成此操作:

In [100]: mask = (df.index.hour > 14) & (df.index.hour < 17)

In [101]: df[mask].A.sum()
Out[101]: 146.2

In [102]: df[~mask].B.sum()
Out[102]: 51.29

你想做的“行动”是什么?解决方案可能(也可能不)取决于它。可能是@coldspeed的副本更好吗?几乎。。。预期的结果是什么?@Georgy我不这么认为,因为我认为我不能使用。在这段时间之间,但我可能错了
                       A    B       C   D   E
Timestamp                   
2017-10-15 13:30:00 59.9    17.14   0   1   0
2017-10-15 14:30:00 64.3    17.22   0   1   0
2017-10-15 15:30:00 68.6    17.18   0   1   0
2017-10-15 16:30:00 77.6    17.08   0   1   0
2017-10-15 17:30:00 74.5    16.93   0   1   0
In [100]: mask = (df.index.hour > 14) & (df.index.hour < 17)

In [101]: df[mask].A.sum()
Out[101]: 146.2

In [102]: df[~mask].B.sum()
Out[102]: 51.29
In [117]: df['Result'] = ~mask * df.B

In [118]: df
Out[118]:
                        A      B  C  D  E  Result
Timestamp
2017-10-15 13:30:00  59.9  17.14  0  1  0   17.14
2017-10-15 14:30:00  64.3  17.22  0  1  0   17.22
2017-10-15 15:30:00  68.6  17.18  0  1  0    0.00
2017-10-15 16:30:00  77.6  17.08  0  1  0    0.00
2017-10-15 17:30:00  74.5  16.93  0  1  0   16.93