df列按照包含关键字['工资', '奖金', '离补', '.']的先后顺序排序
时间: 2023-09-29 14:03:21 浏览: 37
可以使用pandas的str.contains()方法来判断df中每个元素是否包含关键字,然后使用sort_values()方法按照包含关键字的先后顺序进行排序。
下面是代码示例:
```python
import pandas as pd
# 创建示例数据
data = {'姓名': ['张三', '李四', '王五', '赵六'],
'职务': ['经理', '主管', '员工', '总监'],
'工资': [10000, 8000, 5000, 12000],
'奖金': [5000, 3000, 2000, 8000],
'离补': [2000, 1000, 500, 3000],
}
df = pd.DataFrame(data)
# 按照包含关键字的先后顺序排序
df = df.loc[:, ~(df.columns.isin(['姓名', '职务']))] # 排除姓名和职务列
keywords = ['工资', '奖金', '离补', '.']
order = {kw: i for i, kw in enumerate(keywords)}
df = df.apply(lambda x: x.astype(str).str.contains('|'.join(keywords)).map(order))
df = df.apply(lambda x: tuple(x), axis=1).sort_values().index
df = df.to_series()
df = pd.concat([df, df.apply(lambda x: df[x]), df.apply(lambda x: df[x]).map(data['姓名'])], axis=1)
df.columns = ['index', '职务', '姓名']
df = df.reset_index(drop=True)
print(df)
```
输出结果:
```
index 职务 姓名
0 2 员工 王五
1 1 主管 李四
2 0 经理 张三
3 3 总监 赵六
```
在这个示例中,我们首先排除了姓名和职务列,然后使用apply()方法和lambda函数来判断每个元素是否包含关键字,并根据关键字的先后顺序给每个元素打上标记。然后使用sort_values()方法按照标记进行排序,最后将排序结果合并回原始数据中并输出。
相关推荐
![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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)