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 19:03:25 浏览: 82
可以使用pandas的sort_values()方法对数据框进行排序,其中参数by指定按照哪一列进行排序,参数key指定排序规则。
以下是按照sheet名列关键字['四','三','二','一']先后顺序排序的代码:
```
df = df.sort_values(by='sheet名', key=lambda x: x.map({'四': 1, '三': 2, '二': 3, '一': 4}))
```
解析:
- sort_values()方法用于按照指定列进行排序,可以通过参数ascending指定升序或降序排列,默认为升序排列。
- by参数指定按照哪一列进行排序,这里我们指定按照'sheet名'列进行排序。
- key参数指定排序规则,lambda函数将'sheet名'列的值映射为对应的排序关键字。映射关系为{'四': 1, '三': 2, '二': 3, '一': 4},表示按照['四','三','二','一']的先后顺序排序。
相关问题
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 中的 apply 函数来实现按照包含关键字的先后顺序排序。具体操作如下:
1. 创建一个包含关键字的列表,按照先后顺序排序:
```
order = ['工资', '离补', '奖金', '差异']
```
2. 创建一个函数,用于对每个 group 中的 sheet_name 进行排序:
```
def sort_sheet_name(group):
# 遍历关键字列表
for keyword in order:
# 如果 sheet_name 包含关键字,则返回关键字在列表中的索引值
if keyword in group['sheet名']:
return order.index(keyword)
# 如果 sheet_name 不包含任何关键字,则返回列表长度,表示排在最后
return len(order)
```
3. 对每个 groupdf 中的 group 进行排序:
```
groups = df.groupby('表名')
for name, groupdf in groups:
groupdf = groupdf.groupby('sheet名')
for sheetname, group in groupdf:
group = group.iloc[group['sheet名'].apply(lambda x: sort_sheet_name(x)).argsort()]
print(group)
```
其中,`group['sheet名'].apply(lambda x: sort_sheet_name(x))` 会返回一个 Series,包含每个 sheet_name 在关键字列表中的索引值,然后用 `argsort()` 函数进行排序,得到的索引值,即为排序后的顺序,最后通过 `iloc` 函数对 group 进行排序。
阅读全文