使用pandas将数据添加到csv列

时间:2016-06-03 15:53:26

标签: python python-2.7 csv pandas

我有一些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"列。那么如何按列添加它们呢?

2 个答案:

答案 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')