Python 熊猫分组,然后使用多列合并

Python 熊猫分组,然后使用多列合并,python,pandas,Python,Pandas,我对Pandas很陌生,但我正在尝试分析员工时间戳的数据集,以确定每周唯一的每日时间戳的总和 我的初始数据帧(input1)如下所示(但要长得多): 我创建了另一个数据帧: df = pd.DataFrame({'Timestamp': input1['Datetime'], 'ID': input1['ID'], 'Week/Year': input1['Week/Year'],'MDY':input1['Server Date/Time'].apply(lambda x: "%d/%d/%

我对Pandas很陌生,但我正在尝试分析员工时间戳的数据集,以确定每周唯一的每日时间戳的总和

我的初始数据帧(input1)如下所示(但要长得多):

我创建了另一个数据帧:

df = pd.DataFrame({'Timestamp':  input1['Datetime'], 'ID': input1['ID'], 'Week/Year': input1['Week/Year'],'MDY':input1['Server Date/Time'].apply(lambda x: "%d/%d/%d" % (x.month, x.day, x.year))})
然后,我按周、员工分组,得到每天唯一计数(MDY):

我所寻找的最终结果是通过加入Week和ID将MDY和合并回初始数据帧-我尝试了几种不同的方法:

input1.merge(df_grouped.to_frame(), left_on=['ID','Week/Year'], right_index=True)
要获得类似于:

           ID          Datetime        Week/Year    MDY
0          15.0    2019-02-04 08:28:44   6/2019    5
1          15.0    2019-02-04 12:48:05   6/2019    5
2          15.0    2019-02-04 12:54:29   6/2019    5
3          15.0    2019-02-05 08:05:51   6/2019    5
4          15.0    2019-02-05 12:47:26   6/2019    5
5          15.0    2019-02-05 14:45:34   6/2019    5
在加入之后,我最终得到了一个全面的结果。有人能把我引向正确的方向吗


谢谢。

groupby

df_grouped = df.groupby(['Week/Year', 'WD: Employee ID']).MDY.nunique()
应返回一个系列,其索引为
周/年WD:Employee ID

Week/Year   WD: Employee ID
6/2019      15.0   5
Name: MDY , dtype: int64
但是,它的索引显示为
周/年ID
。您可以检查列名称以确保其匹配

接下来,关于这个

input1.merge(df_grouped.to_frame(), left_on=['ID','Week/Year'], right_index=True)
假设
df\u group
有索引,如您在示例中所示,即
Week/Year ID
,则
left\u在
上的顺序与
right\u索引的顺序错误。应该是

input1.merge(df_grouped.to_frame(), left_on=['Week/Year', 'ID'], right_index=True)

很可能是列名问题。有时您会说,
input1
列是
ID
Datetime
,有时您会将它们用作
WD:Employee ID
Server Date/Time
。一旦这是一致的,您的代码就会产生预期的数据帧。这是我在转换/混淆数据时的一个输入错误。感谢您指出。第一个问题实际上只是将数据转换为模糊数据时的一个输入错误,但左上角的顺序才是问题所在。非常感谢。
input1.merge(df_grouped.to_frame(), left_on=['ID','Week/Year'], right_index=True)
input1.merge(df_grouped.to_frame(), left_on=['Week/Year', 'ID'], right_index=True)