import pandas as pd df = pd.DataFrame({'序号': [1, 2, 3, 4], '表名': ['北部公司', '东部公司','南部公司', '西部公司'] 'sheet名': ['差异-招商银行', '奖金-民生银行','工资-浙商银行', '离补-工商银行'], '姓名': ['Malehhjkjkgkjjgkgjk', 'Femalestrehree', 'Femalegrhreherdfdfdfh', 'Maledfgfdgdfdg'], '金额': [2, 2, 2, 2]}) groups=df.groupy('表名') for name , groupdf in groups: groupdf = groups.groupy('sheet名') for sheetname , group in groupdf: 把group按照包含关键字['工资', '离补', '奖金', '差异']的先后顺序排序
时间: 2023-06-13 14:08:54 浏览: 156
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
5星 · 资源好评率100%
您可以使用pandas中的sort_values()方法对group进行排序。以下是示例代码:
```
import pandas as pd
df = pd.DataFrame({'序号': [1, 2, 3, 4],
'表名': ['北部公司', '东部公司','南部公司', '西部公司'],
'sheet名': ['差异-招商银行', '奖金-民生银行','工资-浙商银行', '离补-工商银行'],
'姓名': ['Malehhjkjkgkjjgkgjk', 'Femalestrehree', 'Femalegrhreherdfdfdfh', 'Maledfgfdgdfdg'],
'金额': [2, 2, 2, 2]})
groups = df.groupby('表名')
for name, groupdf in groups:
groupdf = groupdf.groupby('sheet名')
for sheetname, group in groupdf:
# 按照包含关键字['工资', '离补', '奖金', '差异']的先后顺序排序
group = group.sort_values(by=['sheet名'], key=lambda x: x.str.extract('({})'.format('|'.join(['工资', '离补', '奖金', '差异'])), expand=False).fillna('').apply(lambda x: [i for i, s in enumerate(['工资', '离补', '奖金', '差异'], 1) if s in x][0]))
print(group)
```
这段代码会对group中的'sheet名'列进行排序,排序的方式是根据包含关键字['工资', '离补', '奖金', '差异']的先后顺序进行排序。其中,sort_values()方法中的key参数使用了lambda函数,该函数将'sheet名'列中包含的关键字提取出来,并返回一个列表,该列表中的元素是关键字在['工资', '离补', '奖金', '差异']中的位置。例如,如果'sheet名'中包含'离补'和'工资',则返回[2, 1],表示'离补'的位置是2,'工资'的位置是1。sort_values()方法会根据这个列表对group进行排序。
阅读全文