我有一张这样的表:
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中做这样的事情,在将其加载到数据框后我按用户和周分组数据,并且我不知道如何在分组后访问数据。
还有一个用户在分组数据后如何访问数据?
非常感谢任何帮助!
答案 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