首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Python Pandas DataFrame中保留列顺序

在Python Pandas DataFrame中保留列顺序
EN

Stack Overflow用户
提问于 2013-03-27 07:27:37
回答 3查看 62.9K关注 0票数 43

在使用Python Pandas进行读取和写入时,有没有办法保持csv文件中列的顺序?例如,在下面的代码中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd

data = pd.read_csv(filename)
data.to_csv(filename)

输出文件可能会有所不同,因为列没有保留。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-06 09:28:50

在当前版本的Pandas ('0.11.0')中似乎有一个bug,这意味着Matti John的答案将不起作用。如果指定要写入文件的列,这些列将按字母顺序写入,但只需根据cols中的列表重新标记即可。例如,下面的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas
dfdict={}
dfdict["a"]=[1,2,3,4]
dfdict["b"]=[5,6,7,8]
dfdict["c"]=[9,10,11,12]
df=pandas.DataFrame(dfdict)
df.to_csv("dfTest.txt","\t",header=True,cols=["b","a","c"])

导致此(不正确)输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    b   a   c
0   1   5   9
1   2   6   10
2   3   7   11
3   4   8   12

您可以通过执行以下命令来检查已安装的pandas的版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pandas.version.version

here是to_csv的文档

实际上,这似乎是一个已知的错误,将在即将发布的版本(0.11.1)中修复:

https://github.com/pydata/pandas/issues/3489

更新:目前还没有新的pandas版本,但这里描述了一个解决方法,它不需要使用不同版本的pandas:

github.com/pydata/pandas/issues/3454

因此,将上述代码块中的最后一行更改为以下内容将正常工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.to_csv("dfTest.txt","\t",header=True,cols=["b","a","c"], engine='python')

UPDATE似乎参数"cols“已被重命名为"columns”,并且参数"engine“在最近的pandas版本中已被弃用(不再可用)。此外,此错误已在版本0.19.0中修复。

票数 37
EN

Stack Overflow用户

发布于 2013-03-27 12:24:30

在读取和写入csv文件时,通常应该保留列顺序,但是如果由于某种原因,列顺序不是您想要的顺序,则可以在to_csv中使用columns关键字参数。

例如,如果您有一个包含a、b、c、d列的csv:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = pd.read_csv(filename)
data.to_csv(filename, columns=['a', 'b', 'c', 'd'])
票数 24
EN

Stack Overflow用户

发布于 2016-01-28 02:22:11

另一种解决方法是执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
data = pd.read_csv(filename)
data2 = df[['A','B','C']]  #put 'A' 'B' 'C' in the desired order
data2.to_csv(filename)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15653688

复制
相关文章
在pandas中遍历DataFrame行
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
用户7886150
2020/12/26
3.2K0
Python+Pandas逐行处理DataFrame中的某列数据(无循环)
创建一个包含10行6列随机数的DataFrame,行标签从大写字母A开始,列标签从小写字母u开始。然后从上向下遍历,如果某行u列的值比上一行u列的值大,就把该行x列的值改为上一行x列的值加1,否则保持原来的值不变。
Python小屋屋主
2023/08/29
4340
Python+Pandas逐行处理DataFrame中的某列数据(无循环)
(六)Python:Pandas中的DataFrame
        DataFrame与Series相比,除了可以每一个键对应许多值之外,还增加了列索引(columns)这一内容,具体内容如下所示:
小点点
2022/12/12
3.8K0
pandas dataframe 新增单列和多列
dataframe assign方法,返回一个新对象(副本),不影响旧dataframe对象
lovelife110
2021/01/14
4.3K0
Python之Pandas中Series、DataFrame实践
Python之Pandas中Series、DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一
王小雷
2018/01/02
3.9K0
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7K0
Pandas DataFrame显示行和列的数据不全
pd.set_option('display.max_columns', None)
用户7886150
2020/12/26
6.7K0
「Python实用秘技07」在pandas中实现自然顺序排序
  这是我的系列文章「Python实用秘技」的第7期,本系列立足于笔者日常工作中使用Python积累的心得体会,每一期为大家带来一个几分钟内就可学会的简单小技巧。
Feffery
2022/05/09
1.2K0
「Python实用秘技07」在pandas中实现自然顺序排序
【说站】python中pandas模块查看DataFrame
以上就是python中pandas模块查看DataFrame的方法,希望对大家有所帮助。更多Python学习指路:python基础教程
很酷的站长
2022/11/23
9510
python pandas dataframe函数_Python Pandas dataframe.ne()用法及代码示例
Python是进行数据分析的一种出色语言,主要是因为以数据为中心的python软件包具有奇妙的生态系统。 Pandas是其中的一种,使导入和分析数据更加容易。
用户7886150
2021/01/16
1.6K0
在Python如何将 JSON 转换为 Pandas DataFrame?
在数据处理和分析中,JSON是一种常见的数据格式,而Pandas DataFrame是Python中广泛使用的数据结构。将JSON数据转换为Pandas DataFrame可以方便地进行数据分析和处理。在本文中,我们将探讨如何将JSON转换为Pandas DataFrame,并介绍相关的步骤和案例。
网络技术联盟站
2023/08/03
1.3K0
在Python如何将 JSON 转换为 Pandas DataFrame?
pandas按行按列遍历Dataframe的几种方式
iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问。 itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高。 iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问。 示例数据
kirin
2021/04/30
7.1K0
Pandas 修改单列,多列,Dataframe 数据类型方法汇总
文章目录 1.修改单列的数据类型 2.修改指定多列的数据类型 3.创建dataframe时,修改数据类型 4.读取时,修改数据类型 5.自动 1.修改单列的数据类型 import pandas as pd import numpy as np df = pd.read_csv('test.csv') df['column_name'] = df['column_name'].astype(np.str) print(df.dtypes) 2.修改指定多列的数据类型 import pandas as
白墨石
2021/01/13
6.7K0
python下的Pandas中DataFrame基本操作(二),DataFrame、dict、array构造简析
DataFrame简介:   DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。跟其他类似的数据结构相比(如R的data.frame),DataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。 导入基本python库: import numpy as np
学到老
2018/06/01
5.9K0
在 Pandas DataFrame 中应用 IF 条件的5种方法
现在,我们创建一个仅包含Jon, Bill, Maria and Emma等文本内容的DataFrame,IF 条件如下:
披头
2022/08/22
9.4K0
在 Pandas DataFrame 中应用 IF 条件的5种方法
python用符号拼接DataFrame两列
碰到Null值时,会报错,因为none不可与str运算 解决如下,加入if判断即可
诡途
2022/01/07
1.7K0
pandas中关于DataFrame行,列显示不完全(省略)的解决办法[通俗易懂]
有时候DataFrame中的行列数量太多,print打印出来会显示不完全。就像下图这样:
全栈程序员站长
2022/09/14
9.3K0
pandas中关于DataFrame行,列显示不完全(省略)的解决办法[通俗易懂]
Pandas基础:在Pandas数据框架中移动列
有时候,我们需要在pandas数据框架内移动一列,shift()方法提供了一种方便的方法来实现。
fanjy
2022/06/04
3.2K0
Pandas基础:在Pandas数据框架中移动列
Pandas DataFrame笔记
1.属性方式,可以用于列,不能用于行 2.可以用整数切片选择行,但不能用单个整数索引(当索引不是整数时) 3.直接索引可以使用列、列集合,但不能用索引名索引行  用iloc取行,得到的series:
用户1075292
2018/01/23
9740
Pandas DataFrame笔记
点击加载更多

相似问题

将JSON加载到Pandas dataframe时保留列顺序

231

在附加时保留dataframe列顺序

23

更改Pandas dataframe列顺序

30

条件选择是否保留Pandas DataFrame中的顺序?

20

dict中Pandas Dataframe的列顺序

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文