Im正在从流中读取CSV数据(例如cat /tmp/rawfile
(。下面的演示代码可以工作。
cmd = ('cat', '/tmp/csvfile')
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
csv = io.StringIO(process.stdout.read().decode())
data = pandas.read_csv(csv, index_col=0)
csv.close()
此CSV包含10K行。我想阅读Pandas并将1k行保存到CSV文件中。然后,接下来的1k行将转到下一个CSV文件。这就是我正在努力实现的目标。这可能吗?
有关此的一些信息:
我有一些CSV文件,它们的大小真的很大。(数十亿行(我使用了Split
命令,但有几行具有n - newline characters
,所以在基于多行进行拆分时,它会将n
之后的其余列移动到下一行。
示例:
Row 1:
"col1" | "col2" | "This is
my first row"
Row 2:
"col1" | "col2" | "This is my second row"
第1行-这两行属于一个特定的列。但如果我按行拆分,它会把它拆分成两行。
这就是为什么我想使用Pandas读取流式数据(stdin
(,每个数据块100行,并将其放入CSV文件中。然后读取接下来的100行并附加相同的CSV,因为我想每个CSV放1k行。
对此逻辑有什么建议或示例代码吗?
更新:
我的意图是,将1k行放在一个CSV文件中。我每次DF读取100行的原因是为了节省内存。将100行读取到DF中,然后将其刷新到一个文件中,然后是下一个100->重复直到1000行(10次(,然后用不同的csv文件对接下来的1000行重复整个过程
不确定您是否想要,请尝试:
df=pd.DataFrame()
df=df.append(["x"]*1000)
# Loop
i=0
while i <len(df)-1:
df.iloc[i:i+1000,:].to_csv("output_{0}_{1}.csv".format(i,i+1000),index=False)
i+=1000