如何在熊猫中按日期分组并创建与日期关联的时间列

时间:2019-08-29 02:32:56

标签: python pandas dataframe group-by

我将此数据作为数据框,并且希望对日期进行分组并创建时间列:

        empIdn      date      time
36       517     2019-05-02  12:00:12
54       517    2019-05-02  12:32:05
223      517    2019-05-02  05:18:57
95       517    2019-05-02  05:23:02

我想实现的是

      empIdn       date      timeA    timeB     timeC      timeD
36     517     2019-05-02  12:00:12    12:32:05  05:18:57   05:23:02

这是我到目前为止尝试过的:

datas = pd.read_csv(datFile, sep="\t",usecols=[0, skipinitialspace=True, names=['empId', 'date_time'])
df = pd.DataFrame(data = datas)
new = df['date_time'].str.split(" ", n = 1, expand = True)

df['empIdn'] =  df['empId'].astype(int)
df['date'] = new[0]
df['time'] = new[1]
df['date'] = pd.to_datetime(df['date'])
df['time'] = pd.to_datetime(df['time'],format= '%H:%M:%S' ).dt.time

df.drop(columns=['date_time'], inplace = True)
df.drop(columns=['empId'], inplace = True)
df.sort_values('empIdn',inplace = True, ascending = True)

1 个答案:

答案 0 :(得分:0)

df3=df.groupby(['empIdn','date'])['time'].agg(list).reset_index(name='new')
df3 = df3.join(pd.DataFrame(df3.new.values.tolist(), df3.index).add_prefix('time_'))
df3.drop('new', axis=1, inplace = True)