Объединить выбранный столбец из нескольких файлов CSV из разных папок в один файл CSV - PullRequest
1 голос
/ 04 апреля 2019

Это для создания окончательного фрейма данных для моего анализа. Итак, у меня есть три вида CSV-файлов. Я хочу извлечь определенные столбцы из файла 1 и файла 2 и объединить его в файл 3, чтобы получить один файл CSV.

У меня есть одна папка с тремя типами файлов в качестве подпапок -> это 3 подпапки. Эти 3 подпапки содержат данные из разных частей эксперимента и отсортированы по номерам участников.Например, для участника 1001 у меня есть в каждой подпапке файл p1001 и аналогично для участника 1002, в каждой папке у меня есть p1002 и т. Д. Итак, для каждого участника у меня есть три файла с одинаковым именем, но разными папками.Как я могу сделать один CSV-файл для каждого участника, объединяя выбранные столбцы из трех разных подпапок?

import pandas as pd
import os, csv, pdb
import glob

a=[]
base_dir='/Users/...../Desktop/data/'
folders = ('All', 'Choice', 'Choice_S')
pattern = '{}/[{}]/**/filename.csv'.format(base_dir, ''.join(folders))
for filename in glob.glob(pattern):
    filename=pd.DataFrame
    df1=filename[filename['reaction_time']]
    a.append[df1

Это то, что я пытался сделать

1 Ответ

0 голосов
/ 04 апреля 2019

Я пытался воссоздать ваше дело на одном примере

Я сгенерировал 3 случайных файла, каждый из которых содержал 3 столбца и 100 строк, и каждый находился в другой папке

import numpy as np 
import pandas as pd


a = np.random.rand(100,3) 
b = np.random.rand(100,3) 
c = np.random.rand(100,3) 


dataframe1 = pd.DataFrame(a)
dataframe2 = pd.DataFrame(b)
dataframe3 = pd.DataFrame(c)

dataframe1.columns = dataframe2.columns = dataframe3.columns = {"col1","col2","col3"}

dataframe1.to_csv("./1/a.csv")
dataframe2.to_csv("./2/a.csv")
dataframe3.to_csv("./3/a.csv")

Затем я читаю обратно файлы CSV, затем для каждого столбца каждого файла я объединяю строки и сохраняю результат в кадре данных, содержащем 300 объединенных строк из 3 файлов. используя pandas.concat с осью = 0, затем я объединил столбцы, используя ту же функцию с осью = 1

a1 = pd.read_csv("./1/a.csv")
a2 = pd.read_csv("./2/a.csv")
a3 = pd.read_csv("./3/a.csv")



combined_col1 = pd.concat([a1["col1"],a2["col1"],a3["col1"]],axis=0) 
combined_col2 = pd.concat([a1["col2"],a2["col2"],a3["col2"]],axis=0) 
combined_col3 = pd.concat([a1["col3"],a2["col3"],a3["col3"]],axis=0) 

combine_col1_col2 = pd.concat([combined_col1,combined_col2],axis=1) 


combine_col1_col2.to_csv("result.csv")

надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...