我有一个这样的Pandas巢:
df = pd.DataFrame({ 'class': ['Opn', 'Opn', 'MA', 'CoNo', 'Opn'], 'title': ['Title1', 'Title1', 'Title2', 'Title3', 'Title2'], 'event_count': [16, 11, 8, 7, 5]})
df = pd.DataFrame({
'class': ['Opn', 'Opn', 'MA', 'CoNo', 'Opn'],
'title': ['Title1', 'Title1', 'Title2', 'Title3', 'Title2'],
'event_count': [16, 11, 8, 7, 5]
})
字符串我如何在class中对值进行降序排序,然后在title中排序,这样输出就像这样:
的数据
q3aa05251#
IIUC您可以:
df = df.groupby(["class", "title"], as_index=False).sum()df["tmp"] = df["title"].str.extract(r"Title(.*)").astype(int)df = df.sort_values(by=["class", "tmp"], ascending=[False, True]).drop(columns="tmp")print(df)
df = df.groupby(["class", "title"], as_index=False).sum()
df["tmp"] = df["title"].str.extract(r"Title(.*)").astype(int)
df = df.sort_values(by=["class", "tmp"], ascending=[False, True]).drop(columns="tmp")
print(df)
字符串印刷品:
class title event_count2 Opn Title1 273 Opn Title2 51 MA Title2 80 CoNo Title3 7
class title event_count
2 Opn Title1 27
3 Opn Title2 5
1 MA Title2 8
0 CoNo Title3 7
型
ijxebb2r2#
我做了一个类似于Andrej建议的tmp列,但是总和在event_count列上。
df2 = df.groupby(['class', 'title']).sum()df3['total_count'] = df2.groupby('class')['event_count'].transform('sum')df3 = df3.sort_values(by=['class', 'event_count'], ascending=[False, False]).reset_index()df4 = df3.drop(columns=['total_count'])
df2 = df.groupby(['class', 'title']).sum()
df3['total_count'] = df2.groupby('class')['event_count'].transform('sum')
df3 = df3.sort_values(by=['class', 'event_count'], ascending=[False, False]).reset_index()
df4 = df3.drop(columns=['total_count'])
字符串
2条答案
按热度按时间q3aa05251#
IIUC您可以:
字符串
印刷品:
型
ijxebb2r2#
我做了一个类似于Andrej建议的tmp列,但是总和在event_count列上。
字符串