Pandas to_csv没有在for循环

时间:2016-11-09 01:38:19

标签: python pandas

我正在将数据框中的项目输出到csv。但是,对于某些较旧的下游应用程序来说,这些数据太长了,所以我在每个X项中都有csv add line break,因此输出中的各行不会太长。

示例:

A,B,C,D,E,F,G,H,I,J,K  #this is actually a column in the input, rendered horizontal for space

成为文件(X = 3) -

A,B,C
D,E,F
G,H,I
J,K

如果打算使用不均匀的最后一行,那么这种情况就相当普遍了。

实际代码片段:

data = pd.read_csv(infilename, header=None)
size=50
col=0
indexes = np.arange(0,len(data),size) #have to use numpy since range is now an immutable type in python 3
indexes = np.append(indexes,[len(data)]) #add the uneven final index
for i in range(len(indexes)-1):
    holder = pd.DataFrame(data.iloc[indexes[i]:indexes[i+1],col]).T
    holder.to_csv(outfilename, index=False, header=False)

唯一奇怪的是,尽管没有抛出任何错误,但最终循环(具有不均匀的最终索引)不会写入文件,即使信息被完美地分配给持有者。由于没有抛出任何错误,我无法弄清楚为什么没有写入最终信息。有谁知道什么可能导致最后的写命令失败?

编辑:

好的,我只是尝试对路径进行硬编码并删除所有tkinter。现在,它完美地写入数据,但它不再显示变量模式行为;它会重复覆盖单行数据,但会成功写入最后一行。下面的示例包含一个修改过的for循环来解释此问题。

import pandas as pd
import numpy as np

infilename = 'C:\\Users\\...infile.csv'
data = pd.read_csv(infilename, header=None) #usecols=[0], only get 1st column, specify no header
outfilename = 'C:\\Users\\...test.txt'

size=50 #number of items per line
col=0
indexes = np.arange(0,len(data),size)#have to use numpy since range is now an immutable type in python 3
indexes = np.append(indexes,[len(data)]) #add the uneven final index
for i in range(len(indexes)-1):
    holder = pd.DataFrame(data.iloc[indexes[i]:indexes[i+1],col]).T
    if i ==0:
        holder.to_csv(outfilename, index=False, header=False)
    else:
        holder.to_csv(outfilename, index=False, header=False, mode='a')

这仍然存在问题,因为我需要最终用户能够在没有技术素养的情况下使用它。

0 个答案:

没有答案