2016-06-03 1 views
-1

У меня есть некоторые файлы csv, и я хочу скопировать определенный столбец из всех них и сохранить его в новом столбце csv-файла wise. Но следующий код добавляет их в один столбец.добавить данные в csv column wise using pandas

Кроме того, я должен пройти почти 20 М данных, поэтому я не хочу хранить их в одном кадре данных и сохранять их в последний раз.

Вот мой код:

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-я строка из каждого файла должна «приземлиться» в первой строке файла результатов - она ​​может работать, если вы не будете использовать '.dropna()'. Если нет, уточните, как вы хотите объединить свои данные из разных файлов. – MaxU

+0

'' close ''- это 9-й столбец этих файлов csv, и мне нужен этот столбец. Теперь 9-й столбец формирует первый файл в 1-м столбце результата csv-файл, 9-й столбец из 2-го файла земли в 2-м столбце результата и т. Д. – Eular

+0

Я спрашиваю о __rows __... например, в первом файле 9-й столбец имеет те значения: '1,2, NaN, 3,4' и file2 имеют:' 11, NaN, 22,33, NaN' - как должен выглядеть ваш файл результатов? – MaxU

ответ

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) 
+0

, как долго этот единственный фрейм может быть сохранен? beacuse У меня есть 2K-файлы, каждый с почти 5K строками данных – Eular

+0

зависит от вашей памяти и от того, используете ли вы 32-разрядные или 64-разрядные системы/Python/etc. Обычно я работаю с кадрами данных 10-14 ГБ на своем ноутбуке (ОЗУ 16 ГБ, Windows 7 64-бит, Python 3.5 64-бит) - без каких-либо проблем. Таким образом, ваш 20 МБ не должен быть проблемой даже в 32-битной системе с ограничением в 3 ГБ ОЗУ – MaxU

+0

Его не 20 МБ, его 20 млн. – Eular

0

я не уверен, как это сделать с помощью Pythond, но в R, это очень легко.

Объединить все столбцы в File1 и Column12 в File2.

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

 Смежные вопросы

  • Нет связанных вопросов^_^