在数据框中分组并获取每个组的详细信息

时间:2017-04-23 23:40:11

标签: python sql pandas dataframe

我有一张这样的表:

   user   week  message  col2
   ----  -----  ----     ----
     A     1     Hi       30
     A     1     Hello    30
     A     2     To       30
     A     2     From     40
     B     1     call     30
     B     1     should   20
     B     2     sadas    50

我需要先按用户分组,然后按周分组并处理一些数据。

前:

    for user in everyUser:
        for week in everyWeek:
             week_data = list of all messages of the week.

需要在Pandas中做这样的事情,在将其加载到数据框后我按用户和周分组数据,并且我不知道如何在分组后访问数据。

还有一个用户在分组数据后如何访问数据?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用groupby.apply模式;通常,apply接受一个函数,并从分组数据框的每个组中获取数据作为参数;在这种情况下,如果您只关心message,请使用[]提取列,并将list函数应用于每个用户的消息,该消息将为消息提供消息列表。用户在相应的一周:

df.groupby(['user', 'week'])['message'].apply(list)

#user  week
#A     1          [Hi, Hello]
#      2           [To, From]
#B     1       [call, should]
#      2              [sadas]
#Name: message, dtype: object

答案 1 :(得分:2)

#create your group
group = df.groupby(by=['user','week'])

#print all the groups and values
for k,v in group:
    print(k)
    print(v)
#get a group by the group key (user,week)    
group.get_group(('A', 1))   
Out[134]: 
  user  week message  col2
0    A     1      Hi    30
1    A     1   Hello    30