我有一些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文件,两列用于这两个文件的"close"
列。那么如何按列添加它们呢?
答案 0 :(得分:1)
你可以这样做:
def get_merged_csv(flist, **kwargs):
return pd.concat([pd.read_csv(f, **kwargs) for f in flist], axis=1)
fmask = '*.csv'
# column numbers are starting from 0, so 9th column has index 8
df = get_merged_csv(glob.glob(fmask), usecols=[8])
df.to_csv(filename,mode="a",header=False,index=False)
答案 1 :(得分:0)
我不确定如何使用Pythond做到这一点,但在R中,这很容易。
合并File2中的File1和Column12中的所有列。
import pandas as pd
file1 = pd.read_table('C:\\Users\Users\\your_path_here\\Book1.csv', delimiter=',', header=None)
file2 = pd.read_table('C:\\Users\\Users\\your_path_here\\Book2.csv', delimiter=',', header=None)
file2_short = file2.ix[:,12:13]
#print (file2_short)
frames=[file1, file2_short]
new = pd.concat(frames)
new.to_csv('C:\\Users\\your_path_here\\newfile.csv')