Python 3.x 如何使用Python Lambda函数按列id聚合列A?

Python 3.x 如何使用Python Lambda函数按列id聚合列A?,python-3.x,pandas,pandas-groupby,Python 3.x,Pandas,Pandas Groupby,我正在聚合数据帧中的许多列。现在,我想创建一个df_8,其中我想说,对于所有唯一的id,只需粘贴列os的值。当我运行第一个聚合部分时,我没有得到一个错误。但是,当我运行合并所有聚合数据帧的下一步时,它不起作用。我的脚本唯一的新变化是添加了df_8(操作系统聚合)。 为什么? @对不起,我在merge语句中输入了错误的id。刚刚更正了它,但是在合并部分抛出错误的行是:df=pd.merge(df_f,df_8,on='userid',how='left')。fillna(0)这个df_8真的没有任

我正在聚合数据帧中的许多列。现在,我想创建一个df_8,其中我想说,对于所有唯一的id,只需粘贴列os的值。当我运行第一个聚合部分时,我没有得到一个错误。但是,当我运行合并所有聚合数据帧的下一步时,它不起作用。我的脚本唯一的新变化是添加了df_8(操作系统聚合)。 为什么?


@对不起,我在merge语句中输入了错误的id。刚刚更正了它,但是在合并部分抛出错误的行是:df=pd.merge(df_f,df_8,on='userid',how='left')。fillna(0)这个
df_8
真的没有任何意义。问题在于,您的
groupby
去掉了
'id'
列,您可能只剩下一个包含两列的数据框
['index','os']
。但是再一次,groupby的
groupby
并没有真正起到任何作用,也许你的意思是
df_8=df_test[['id','os']]
?或者你想如何聚合
'os'
?@ALollz它成功了!!!!非常感谢。
AGGREGATION
    df_test=df[['id','date','purchase','days1','days2','inactivity','visitnumber','total_duration','os']].copy()

    df_1=df_test.groupby(['id'])["date"].apply(lambda z : ((z.max()-z.min()) + '1D')).astype('timedelta64[D]').reset_index()
    df_2=df_test.groupby(['id'])["purchase"].apply(lambda x : x.astype(int).sum()).reset_index()
    df_3=df_test[df_test['days1'].gt(0)].groupby('id')['date'].count().astype(int)
    df_4=df_test.groupby(['id'])["days2"].apply(lambda t : t.astype(int).count()).reset_index()
    df_5=df_test.groupby(['id'])["total_duration"].apply(lambda f : (today-f.min())+'1D').astype('timedelta64[D]').reset_index()
    df_6=df_test[df_test['days1'].gt(0)].groupby(['id'])['inactivity'].apply(lambda j: (today - j.max())).astype('timedelta64[D]')
    df_7=df_test[df_test['purchase'].gt(0)].groupby(['id'])['visitnumber'].apply(lambda i : i.astype(int).count()).reset_index()
    **df_8=df_test.groupby(['id'])['os'].apply(lambda h: h).reset_index()**

MERGING OF ALL DFs
df_a=pd.merge(df_1, df_2, on='id', how='left').fillna(0)
df_b=pd.merge(df_a, df_3, on='id', how='left').fillna(0)
df_c=pd.merge(df_b, df_4, on='id', how='left').fillna(0)
df_d=pd.merge(df_c, df_5, on='id', how='left').fillna(0)
df_e=pd.merge(df_d, df_6, on='id', how='left').fillna(0)
df_f=pd.merge(df_e, df_7, on='id', how='left').fillna(0)
df  =pd.merge(df_f, df_8, on='id', how='left').fillna(0)

df.head()

Error: KeyError: 'id'