Pandas在多索引中的多个排序/分区

yshpjwxd  于 2024-01-04  发布在  其他
关注(0)|答案(2)|浏览(112)

我有一个这样的Pandas巢:

  1. df = pd.DataFrame({
  2. 'class': ['Opn', 'Opn', 'MA', 'CoNo', 'Opn'],
  3. 'title': ['Title1', 'Title1', 'Title2', 'Title3', 'Title2'],
  4. 'event_count': [16, 11, 8, 7, 5]
  5. })

字符串
我如何在class中对值进行降序排序,然后在title中排序,这样输出就像这样:


的数据

q3aa0525

q3aa05251#

IIUC您可以:

  1. df = df.groupby(["class", "title"], as_index=False).sum()
  2. df["tmp"] = df["title"].str.extract(r"Title(.*)").astype(int)
  3. df = df.sort_values(by=["class", "tmp"], ascending=[False, True]).drop(columns="tmp")
  4. print(df)

字符串
印刷品:

  1. class title event_count
  2. 2 Opn Title1 27
  3. 3 Opn Title2 5
  4. 1 MA Title2 8
  5. 0 CoNo Title3 7

展开查看全部
ijxebb2r

ijxebb2r2#

我做了一个类似于Andrej建议的tmp列,但是总和在event_count列上。

  1. df2 = df.groupby(['class', 'title']).sum()
  2. df3['total_count'] = df2.groupby('class')['event_count'].transform('sum')
  3. df3 = df3.sort_values(by=['class', 'event_count'], ascending=[False, False]).reset_index()
  4. df4 = df3.drop(columns=['total_count'])

字符串

相关问题