非常抱歉之前的回答不准确。根据您的要求,我们可以按照下面的思路给出代码。
首先,为了辅助排序,我们需要为原始数据增加一个新的列"num",记录同一公司内每个人名出现的次数。可以使用`groupby`和`transform`函数实现:
df['num'] = df.groupby(['公司', '姓名'])['姓名'].transform('count')
然后,按照公司进行分组,并对辅助列"num"进行降序排列:
sorted_df = df.sort_values(by=['公司', 'num'], ascending=[False, False])
最后,我们可以根据需要对公司进行降序排列,可以继续使用`groupby`和`sum`函数:
sorted_df = sorted_df.groupby('公司').apply(lambda x: x.sort_values(by='num', ascending=False))
完成以上操作后,sorted_df即为按照要求排序后的DataFrame,同一公司的人名汇总在一起,同一公司内,人名按照出现次数降序排列。
完整代码如下:
import pandas as pd
# 假设原始DataFrame名称为df,包含"公司"和"姓名"两列
df['num'] = df.groupby(['公司', '姓名'])['姓名'].transform('count')
sorted_df = df.sort_values(by=['公司', 'num'], ascending=[False, False])
sorted_df = sorted_df.groupby('公司').apply(lambda x: x.sort_values(by='num', ascending=False))
print(sorted_df)
请根据实际情况修改列名和DataFrame的名称。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |