使用pandas将数据添加到csv列

2024-04-20 08:36:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 文件csv数据代码importfalsedfos
2条回答

你可以这样做:

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)

我不知道如何使用Pythond来实现这一点,但在R中,它非常简单。在

合并文件1中的所有列和文件2中的列12。在

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

相关问题 更多 >