【发布时间】:2016-06-03 15:53:25
【问题描述】:
我有一些 csv 文件,我想从所有这些文件中复制一个特定的列,并将其保存在一个新的 csv 文件列中。但是下面的代码将它们添加到一个列中。
此外,我总共必须处理近 20M 数据,因此我不想将它们存储在单个数据帧中并最后保存。
这是我的代码:
import os
import glob
import pandas as pd
k= glob.glob("*.csv")
colu="Close"
file="merged.csv"
temp_dirr="./temp/"
if not os.path.exists(temp_dirr):
os.makedirs(temp_dirr)
filename=temp_dirr+file
df=pd.read_csv(k[0])[colu].dropna()
df.to_csv(filename,header=False,index=False)
for i in k[1:]:
df=pd.read_csv(i)[colu].dropna()
df.to_csv(filename,mode="a",header=False,index=False)
这是输出merged.csv文件
23.6
1065
23.45
1150
172.7
11098
11443.3
但我希望输出文件是这样的
23.6 172.7
1065 11098
23.45 11443.3
1150
这里的文件夹有 2 个 csv 文件,两列用于这 2 个文件的 "close" 列。那么如何按列添加呢?
【问题讨论】:
-
你想如何合并你的文件?例如,每个文件的第一行应该“登陆”结果文件的第一行——如果你不使用
.dropna(),它可能会起作用。如果不是,请说明您希望如何加入来自不同文件的数据 -
"close"是那些 csv 文件的第 9 列,我需要这一列。现在第 9 列第 1 个文件位于结果 csv 文件的第 1 列,第 2 个文件的第 9 列位于结果的第 2 列,依此类推 -
我在问 rows... 例如,在第一个文件中,第 9 列有这些值:
1,2,NaN,3,4和 file2 有:11,NaN,22,33,NaN- 你的结果文件应该是什么样子? -
好吧,列不相等,可能有 NaN 值,但它们都在最后。所以他们会填满第 1 行的列,比如 col 1
1,2 ,3和 col21,2,3,4,5(并且 col 1 的最后 2 行将是空白的)
标签: python python-2.7 csv pandas