在unix和windows中将Python Pandas数据帧写入csv的列不匹配

2024-06-28 19:20:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个python pandas数据帧对象,现在我正试图将其写出csv。下面的命令可以在Windows中运行,但是当我在Unix中对完全相同的数据运行完全相同的代码时,列标题在写入csv后不会与列对齐。当我从命令行运行df时,它在Python中看起来很好(例如,df[“somecolumn”]显示了我所期望的)。有什么想法吗?在

df.to_csv(str(outfile), sep=",", header=True, index=False, na_rep="NA", cols=firstcols)

编辑:下面是我的输入,我将通过第一列“VAR”合并这些输入:

^{pr2}$

这是我的python脚本

import csv
import pandas
import glob
from glob import iglob

inpath = '*.tsv'
outfile ="merged.out"

merged = pandas.concat([pandas.read_csv(f, sep='\t', parse_dates=False) for f in glob.iglob(inpath)], axis=0)

dfcols = merged.columns.tolist()
firstcols = ['VAR', 'CHROM', 'POS', 'REF', 'ALT'] #preserve order of first 5 columns only

for d in set(dfcols):
    if d not in firstcols:
        firstcols.append(d)

merged.to_csv(str(outfile), sep="\t", header=True, index=False, na_rep="NA", cols=firstcols)

以下是截断输出的一些外观,以说明标头如何不匹配:

> more merged.out 
VAR     CHROM   POS     REF     ALT     AC      AF      IUC     PU      P       RFG     IRF     IPU     IGN     GI
NA      NA      T       1       NA      NONE(dist=NONE) .       intergenic      ncRNA   0.1383  12892   NA      TGG     NA      1:12892:TGG:T
NA      NA      C       1       NA      WASH7P  .       ncRNA   ncRNA   0.5863  14397   NA      CTGT    NA      1:14397:CTGT:C

但是,在Python环境中,这些列看起来好像被正确地注释了?我被难住了

>>> merged['VAR']
0      1:12892:TGG:T
1     1:14397:CTGT:C
2      1:17084:GGT:G
3      1:17421:ATG:A
0      1:14567:G:GAT
1       1:14670:TG:T
2      1:14745:GGC:G
3       1:14905:GA:G
0    21:10862612:G:A
1    21:10862618:T:C
2    21:10862623:T:C
3    21:10862624:G:T

Tags: csvinimportfalsepandasdfvarmerged