Python 对于if语句,如何隔离数据帧中两次之间的行?
我有一个数据框,其中包含一年中每小时的数据,我想在9:00和17:00之间的所有行中创建一个新行,并在同一行中添加另一行的数据(如果不在该时间范围内) 我相信我想要这样的东西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相加。您
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