Чтение CSV-файла панды - имя файла - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь прочитать несколько файлов CSV, которые имеют разные имена, но одинаковую структуру внутри:

u'/1001/download field1.imem_LOG.csv', 
u'/1001/IRDP_01_25_2018_11_47_16.imem_LOG.csv',
u'/1001/IRDP_08_06_2014_15_07_35.imem_LOG.csv',
u'/1001/IRDP_03_17_2014_15_38_03_LOG.csv',
u'/1001/IRDP-KK-1001_09_11_2017_14_40_48.imem_LOG.csv',

Я не могу прочитать первый и последний:

folder = dataiku.Folder("AfbOboIX")



list_files = folder.list_paths_in_partition()
list_files
list_files_split = map(lambda x : x.split("_"),list_files)
list_files_split

list_idx = [list_files_split.index(x) for x in list_files_split if "LOG.csv" in x]list_idx
list_files_log = [list_files[idx] for idx in list_idx]
list_files_log
    output = pd.DataFrame()
    for name in list_files_log:
        with folder.get_download_stream(name) as f:
            try:
                tmp = pd.read_csv(f)
                tmp = tmp.fillna(0)
                output = output.append(tmp)
            except:
                pass

`

Как я могу решить это?

Ответы [ 4 ]

0 голосов
/ 18 октября 2018

Заменить «Пропустить» на исключением.Поднять и исключить или записать в журнал произошедшую ошибку.И тогда будет легче понять, в чем проблема.

import logging
output = pd.DataFrame()
for name in list_files_log:
    with folder.get_download_stream(name) as f:
        try:
            tmp = pd.read_csv(f)
            tmp = tmp.fillna(0)
            output = output.append(tmp)
        except Exception as err:
            logging.error(err.message)
            logging.exception(err)  # Shows the traceback. 
0 голосов
/ 18 октября 2018
import glob

print(glob.glob(path_of_folder+"/*.csv"))

и

for index,filename in enumerate(glob.glob(path + "/*.csv")):
    dfs.append(pd.read_csv(filename))
0 голосов
/ 18 октября 2018

Вы можете перебирать файлы и добавлять их один за другим

import glob
import pandas as pd

dir = 'path_to_directory/*.csv'

files = glob.glob(dir)

data = pd.DataFrame()

for f in files:
    df = pd.read_csv(f)
    data = data.append(df)

data будет содержать все кадры данных в каталоге

0 голосов
/ 18 октября 2018

Новый код без glob

Я думаю, что вы хотите решить с помощью Ipython:

import pandas as pd

files= !ls *.csv #IPhython stuff
data= pd.concat([pd.read_csv(f, enconding='latin1') for f in files], sort=False)

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

Старый код

Я думаю, что вы хотите, можно решить с помощью glob библиотека:

import glob
import pandas as pd

dir= 'dir/*.csv'

files = glob.glob(dir)
data= pd.concat([pd.read_csv(f) for f in sorted(files)], sort=False)

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

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