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

在Python Pandas DataFrame中保留列顺序
EN

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

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

import pandas as pd

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

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

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

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"])

导致此(不正确)输出:

    b   a   c
0   1   5   9
1   2   6   10
2   3   7   11
3   4   8   12

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

pandas.version.version

here是to_csv的文档

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

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

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

github.com/pydata/pandas/issues/3454

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

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 20:24:30

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

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

data = pd.read_csv(filename)
data.to_csv(filename, columns=['a', 'b', 'c', 'd'])
票数 24
EN

Stack Overflow用户

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

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

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

复制
相关文章

相似问题

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