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 08:02:37 浏览: 33
可以使用pandas的sort_values()方法来实现按照指定列按照特定顺序排序。代码如下:
```
# 定义排序顺序
order = ['浙商', '工商', '民生', '招商']
# 将sheet名列按照指定顺序排序
df = df.sort_values(by='sheet名', key=lambda x: pd.Categorical(x, categories=order))
```
其中,sort_values()方法中的参数by指定要按照哪一列排序,key参数传入一个Lambda函数,将sheet名列转换成Categorical类型,然后根据order参数中定义的顺序进行排序。
相关问题
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进行排序。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![dll](https://img-home.csdnimg.cn/images/20210720083646.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)