是否可以在Pandas的groupby操作中应用`first()`和`last()`来分隔列?

Bry*_*ant 2 python pandas pandas-groupby

我有一个数据帧:

df = pd.DataFrame({'id': [1, 1, 2, 2], 'data': [1, 2, 3, 4], 'value': [10, 9, 8, 7]})

In [4]: df
Out[4]: 
   id  data  value
0   1     1     10
1   1     2      9
2   2     3      8
3   2     4      7

In [5]: df.groupby(['id']).last()
Out[5]: 
    data  value
id             
1      2      9
2      4      7

In [6]: df.groupby(['id']).first()
Out[6]: 
    data  value
id             
1      1     10
2      3      8
Run Code Online (Sandbox Code Playgroud)

是否有可能产生从一个数据帧groupby即是由first()应用valuelast()应用data?如果它可以更容易,你可以假设last()适用于一切,但value,并且first()只适用于value.我可以在两个独立的小组中完成,但是可以在一个小组中吗?

EdC*_*ica 6

你可以将func的dict传递给agg:

In[80]:
df.groupby('id').agg({'data':'last', 'value':['first','last']})
Out[80]: 
   data value     
   last first last
id                
1     2    10    9
2     4     8    7
Run Code Online (Sandbox Code Playgroud)

如果要调用first,可以last在"值"列上传递func列表.这里pandas可以通过仅传递funcs的字符串名来推断出要调用的方法