首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python pandas,根据列重新排序csv文件并写入csv文件

Python pandas,根据列重新排序csv文件并写入csv文件
EN

Stack Overflow用户
提问于 2021-02-04 23:25:17
回答 2查看 31关注 0票数 1
代码语言:javascript
运行
复制
df = pd.read_csv("file.csv")
sorted_df = df.sort_values(by = 'index', ascending = False)
sorted_df.to_csv("output.csv", index = False)

Index是用于对csv文件进行排序的列的名称,但是,我收到一个关键错误,指出无法找到索引列

排序前:

代码语言:javascript
运行
复制
index;name;result
1;John;Ok
2;Jacob;Ok
6;Philip;Nok
7;Joe;Nok
4;Stanley;Ok
5;Alfred;Ok
3;Jill;Nok

排序后的预期结果:

代码语言:javascript
运行
复制
index;name;result
1;John;Ok
2;Jacob;Ok
3;Jill;Nok
4;Stanley;Ok
5;Alfred;Ok
6;Philip;Nok
7;Joe;Nok
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-05 00:02:34

在Pandas中,Index是数据帧索引的关键字。当按索引排序时,pandas可能不确定是使用dataframe的实际索引还是使用名为index的列。在导出dataframe时,您告诉pandas不要导出dataframe索引。但它不会影响列索引。这可能会给你带来麻烦。

让我们将您的数据放在用分号分隔的csv文件中

代码语言:javascript
运行
复制
index;name;result
1;John;Ok
2;Jacob;Ok
6;Philip;Nok
7;Joe;Nok
4;Stanley;Ok
5;Alfred;Ok

为了向您展示不同之处,我可以直接读取3个数据列

代码语言:javascript
运行
复制
df = pd.read_csv("/Users/aortner/Desktop/todelete.csv",delimiter=';')
print(df)

 index     name result
0      1     John     Ok
1      2    Jacob     Ok
2      6   Philip    Nok
3      7      Joe    Nok
4      4  Stanley     Ok
5      5   Alfred     Ok

或者,通过指定索引index_col=,我可以使用csv文件的第一列作为pandas数据帧的索引

代码语言:javascript
运行
复制
import pandas as pd
df = pd.read_csv("/Users/aortner/Desktop/todelete.csv",delimiter=';',index_col="index")
print(df)

          name result
index                
1         John     Ok
2        Jacob     Ok
6       Philip    Nok
7          Joe    Nok
4      Stanley     Ok
5       Alfred     Ok

这可以按索引排序

代码语言:javascript
运行
复制
sorted_df = df.sort_values(by = 'index', ascending = False)
print(sorted_df)

          name result
index                
7          Joe    Nok
6       Philip    Nok
5       Alfred     Ok
4      Stanley     Ok
2        Jacob     Ok
1         John     Ok

并且导出时不带索引列

代码语言:javascript
运行
复制
sorted_df.to_csv("output.csv", index = False)
!cat output.csv

name,result
Joe,Nok
Philip,Nok
Alfred,Ok
Stanley,Ok
Jacob,Ok
John,Ok

或使用索引列

代码语言:javascript
运行
复制
sorted_df.to_csv("output.csv", index = True)
!cat output.csv

index,name,result
7,Joe,Nok
6,Philip,Nok
5,Alfred,Ok
4,Stanley,Ok
2,Jacob,Ok
1,John,Ok

希望这能解决你的问题。

票数 0
EN

Stack Overflow用户

发布于 2021-02-04 23:49:42

我已经想通了。我应该添加分隔符,而且升序必须为True

代码语言:javascript
运行
复制
df = pd.read_csv("file.csv", delimiter = ";")
sorted_df = df.sort_values(by = 'index', ascending = True)
sorted_df.to_csv("output.csv", index = False)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66048621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档