我是大熊猫的新手,我对如何让我的程序工作感到有点困惑。我找到了一些解决方案,但在我的情况下它们不能正常工作。我有以下数据框:
# Day Date/Time Applicationname
1 2016-11-30 2016-11-30 01:27:47.722 comteslacoilswlauncher
2 2016-11-30 2016-11-30 01:27:52.679 comwhatsapp
3 2016-11-30 2016-11-30 01:27:57.690 comwhatsapp
4 2016-11-30 2016-11-30 01:28:02.690 screen_off
我想要做的是按应用程序名称进行分组,并为每个分组的应用程序名称设置开始/结束时间。对于开始时间,我需要第一次出现应用程序的时间 - 2.5秒,结束时间我需要应用程序最后一次出现的时间+ 2.5秒。在只出现一次的情况下,我只用了一次,开始时为-2.5,结束时为+2.5。例如:
# Day Start Date/Time End Date/Time Applicationname
1 2016-11-30 2016-11-30 01:27:45.222 2016-11-30 01:27:50.222 comteslacoilswlauncher
2 2016-11-30 2016-11-30 01:27:50.179 2016-11-30 01:28:00.190 comwhatsapp
4 2016-11-30 2016-11-30 01:28:00.190 2016-11-30 01:28:05.190 screen_off
有关如何操作的任何提示?谢谢
答案 0 :(得分:0)
从您的解决方案示例中,您似乎也希望按天分组,即使您没有明确提及。如果是这样的话,你应该能够做到这样的事情:
grouped = df.groupby(['Day', 'Applicationname'])
min_max = grouped.agg({'Date/Time': [np.min, np.max]})
未经测试:)
答案 1 :(得分:0)
试试这个:
def my_min(ser, delta=pd.Timedelta('2.5 second')):
return ser.min() - delta
def my_max(ser, delta=pd.Timedelta('2.5 second')):
return ser.max() + delta
df.groupby('Applicationname').agg({'Day':'first', 'Date/Time': [my_min, my_max]})
结果:
In [27]: df.groupby('Applicationname').agg({'Day':'first', 'Date/Time': [my_min, my_max]})
...:
Out[27]:
Day Date/Time
first my_min my_max
Applicationname
comteslacoilswlauncher 2016-11-30 2016-11-30 01:27:45.222 2016-11-30 01:27:50.222
comwhatsapp 2016-11-30 2016-11-30 01:27:50.179 2016-11-30 01:28:00.190
screen_off 2016-11-30 2016-11-30 01:28:00.190 2016-11-30 01:28:05.190