我有一个df
,
date amount code id
2018-01-01 50 12 1
2018-02-03 100 12 1
2017-12-30 1 13 2
2017-11-30 2 14 2
我想groupby
id
,而在每个组中,日期也按升序或降序排序,所以我可以执行以下操作,
grouped = df.groupby('id')
a = np.where(grouped['code'].transform('nunique') == 1, 20, 0)
b = np.where(grouped['amount'].transform('max') > 100, 20, 0)
c = np.where(grouped['date'].transform(lambda x: x.diff().dropna().sum()).dt.days < 5, 30, 0)
答案 0 :(得分:2)
您可以使用apply
和sort_values
对每个组中的数据进行排序:
grouped = df.groupby('id').apply(lambda g: g.sort_values('date', ascending=True))
答案 1 :(得分:0)
除了上一个答案外,如果您希望索引保持原样,则可以考虑以下事项: 将熊猫作为pd导入
df = {'a':[1,2,3,0,5], 'b':[2,2,3,2,5], 'c':[22,11,11,42,12]}
df = pd.DataFrame(df)
e = (df.groupby(['c','b', 'a']).size()).reset_index()
e = e[['a', 'b', 'c']]
e = e.sort_values(['c','a'])
print(e)