pandas sort_values 排序后, index 也发生了改变,不改变的情况下需要 reset_index(drop = True)...
时间: 2023-07-14 22:14:17 浏览: 56
是的,使用 pandas 的 sort_values 函数对 DataFrame 进行排序时,如果不想改变原有的 index,需要使用 reset_index(drop=True) 方法。这个方法可以将排序后的 DataFrame 的 index 重置为从零开始的整数序列,并且丢弃原有的 index。
示例代码:
``` python
import pandas as pd
# 创建 DataFrame
df = pd.DataFrame({'col1': [2, 1, 3], 'col2': [4, 6, 5]})
# 排序并重置 index
df_sorted = df.sort_values('col1').reset_index(drop=True)
# 输出排序后的 DataFrame
print(df_sorted)
```
输出结果:
```
col1 col2
0 1 6
1 2 4
2 3 5
```
可以看到,排序后的 DataFrame 的 index 已经被重置为从零开始的整数序列。
相关问题
将使用.sort_values排序后的df的索引重新排序
可以使用`reset_index`方法来重新排序索引,例如:
```python
import pandas as pd
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie', 'David'],
'age': [25, 30, 35, 40],
'score': [80, 70, 90, 85]
})
# 按照分数降序排序
df = df.sort_values(by='score', ascending=False)
# 重新排序索引
df = df.reset_index(drop=True)
print(df)
```
输出结果为:
```
name age score
0 Charlie 35 90
1 David 40 85
2 Alice 25 80
3 Bob 30 70
```
其中,`reset_index`方法的`drop`参数表示是否将原来的索引删除,默认为False。这里我们设置为True,即删除原来的索引。重新排序后,索引就变成了0、1、2、3。
import pandas as pd # 读取销售部门薪酬表 file_path = '销售部门薪酬表.xlsx' data = pd.read_excel(file_path) # 计算应付工资列 data['应付工资'] = data['底薪'] + data['卖房套数'] * data['抽成'] # 按应付工资进行降序排序并重置索引 data_sorted = data.sort_values(by='应付工资', ascending=False).reset_index(drop=True) # 打印排序后的结果 print("排序后的销售部门薪酬表:") print(data_sorted)
这段代码用于读取一个名为`销售部门薪酬表.xlsx`的Excel文件,并计算每个员工的应付工资,最后按照应付工资进行降序排序并打印排序后的结果。具体解释如下:
1. 首先,导入了`pandas`库,用于处理Excel文件数据。
2. 接着,使用`pd.read_excel()`函数读取了`销售部门薪酬表.xlsx`文件,并将结果保存在`data`变量中。
3. 然后,根据公式`应付工资 = 底薪 + 卖房套数 * 抽成`,计算出每个员工的应付工资,并将结果保存在`data`的新列`应付工资`中。
4. 接着,使用`data.sort_values()`函数按照`应付工资`这一列进行降序排序,并使用`reset_index()`函数重置了索引(即重新编号)。
5. 最后,使用`print()`函数打印排序后的结果。
需要注意的是,这段代码只适用于特定的Excel文件格式和数据结构。如果你要处理的Excel文件不同,可能需要进行相应的代码修改。