在列中查找开始时间和结束时间
我有一个数据集,其中有员工进出时间。它看起来是这样的(注意每个员工的两个条目):在列中查找开始时间和结束时间
Employee Date Time
Emp1 1/1/16 06:00
Emp1 1/1/16 13:00
Emp2 1/1/16 09:00
Emp2 1/1/16 17:00
Emp3 1/1/16 11:00
Emp3 1/1/16 18:00
我想要得到的数据是这样的:
Employee Date Start End
Emp1 1/1/16 06:00 13:00
Emp2 1/1/16 09:00 17:00
Emp3 1/1/16 11:00 18:00
我想进入它的数据帧格式,以便我可以做一些计算。
目前我已经试过
df['start'] = np.where((df['employee']==df['employee']&df['date']==df['date']),df['time'].min())
我也试过:
df.groupby(['employee','date]['time'].max()
如何获得两列了一个吗?
我建议将日期和时间合并到一个列中作为DateTime。这将大大简化您的工作。你可以这样做:
df['DateTime']=pd.to_datetime(df['Date']+" "+df['Time'])
df.groupby('Employee')['DateTime'].agg([min, max])
还有其他的选择取决于你的数据的内容。如果你知道所有的作品将在同一天,你可以简单地做:
# First convert Date and Time columns to DateTime type
df['Date'] = pd.to_datetime(df['Date']).dt.date
df['Time'] = pd.to_datetime(df['Time']).dt.time
df.groupby('Employee').agg([min, max])
没有必要在这种情况下创建一个DateTime列。
如果你想知道每天每开始结束时间,你可以这样做:
# First convert Date and Time columns to DateTime type
df['Date'] = pd.to_datetime(df['Date']).dt.date
df['Time'] = pd.to_datetime(df['Time']).dt.time
df.groupby(['Employee','Date'])['Time'].agg([min, max])
我试过了!谢谢!现在,我想让'员工'出现在每一行。我需要将这个数据帧合并到另一个数据帧中。 – KeatonYoung
不完全确定这是你在问什么,但试试这个:'grouped = df.groupby(['Employee','Date'])['Time']。agg([min,max])'然后'分组。 reset_index()' – burhan
它没有用,但我会做更多的研究。我认为这可能只是对群体的限制。如果我找不到任何东西,我会提出另一个问题。再次感谢你! – KeatonYoung
我建议'Date'和'Time'合并成一个列'DateTime'。这将大大简化您的工作。 – burhan
如果我把日期和时间合并在一起,那么我会怎么做? – KeatonYoung
为什么不''df.groupby(['Employee','Date'])。agg([min,max])'? – Zero