我有一个数据框:
class MyArray extends Array {
}
const a = new MyArray("a", "b", "c");
const b = a.slice(1); // Creates new MyArray
console.log(b.join(", ")); // "b, c"
console.log(b instanceof MyArray); // true
是否可以从constructor
生成一个数据帧,该数据帧由应用于instanceof
的{{1}}和应用于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
的{{1}}组成?如果方便,可以假设groupby
应用于除first()
之外的所有内容,并且value
仅应用于last()
。我可以在两个单独的groupby中做到这一点,但是有可能吗?
答案 0 :(得分:6)
您可以将函子字典传递给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
如果要在“值”列上调用first
和last
,则可以传递函数列表。 pandas
可以通过仅传递funcs的字符串名称来推断要调用的方法