import pandas as pd df = pd.DataFrame({'序号': [1, 2, 3, 4], '表名': ['西部公司', '东部公司','东部公司', '西部公司'], 'sheet名': ['招商银行', '民生银行','浙商银行', '工商银行'], '姓名': ['Malehhjkjkgkjjgkgjk', 'Femalestrehree', 'Femalegrhreherdfdfdfh', 'Maledfgfdgdfdg'], '金额': [2, 2, 2, 2]}) 把df按照sheet名列关键字['浙商','工商','民生','招商']先后顺序排序
时间: 2023-06-16 18:02:25 浏览: 18
可以通过自定义一个字典映射来实现按照指定关键字顺序排序,然后使用pandas的sort_values方法进行排序:
```
sort_dict = {'浙商': 0, '工商': 1, '民生': 2, '招商': 3}
df = df.sort_values(by='sheet名', key=lambda x: x.map(sort_dict))
```
这里通过sort_dict字典将关键字映射为数字,然后使用map方法将sheet名列的值映射为数字,最后按照数字进行排序。
相关问题
import pandas as pd df = pd.DataFrame({'序号': [1, 2, 3, 4], '表名': ['西部公司', '东部公司','东部公司', '西部公司'], 'sheet名': ['招商', '民生','浙商', '工商'], '姓名': ['Malehhjkjkgkjjgkgjk', 'Femalestrehree', 'Femalegrhreherdf
', 'Malewerwer'], '年龄': [28, 34, 29, 42]})
这是一个用 Pandas 库创建的 DataFrame,其中包含了一些基本的数据,包括序号、表名、sheet名、姓名和年龄。如果你想了解更多关于 Pandas 的使用,我可以为你提供一些学习资源。
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按照包含关键字['工资', '离补', '奖金', '差异']的先后顺序排序
您可以使用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进行排序。