использование dask read_csv для чтения имени файла в качестве имени столбца - PullRequest
1 голос
/ 26 октября 2019

Я импортирую 4000+ CSV-файлов с одинаковыми столбцами, columns=['Date', 'Datapint'] Импорт CSV-файлов в Dask довольно прост и отлично работает для меня.

file_paths = '/root/data/daily/'
df = dd.read_csv(file_paths+'*.csv',
                 delim_whitespace=True,
                 names=['Date','Datapoint'])

Задача, которую я пытаюсьдля достижения - это возможность назвать столбец 'Datapoint' именем файла .csv. Я знаю, что вы можете установить путь к столбцу, используя include_path_column = True. Но мне интересно, если есть простой способ использовать это имя пути в качестве имени столбца без необходимости выполнять отдельный шаг вниз по линии.

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Мне неясно, что именно вы пытаетесь достичь. Если вы просто пытаетесь изменить имя столбца, в который записываются пути к файлам, вы можете установить include_path_column='New Column Name'. Если вы называете столбец на основе пути к каждому файлу, кажется, что после объединения данных вы получите довольно разреженный массив, и я бы сказал, что групповой режим, вероятно, будет работать лучше.

1 голос
/ 26 октября 2019

Я смог сделать это (довольно прямо), используя функцию задержки dask:

import pandas as pd
import dask.dataframe as dd
from dask import delayed
import glob

path = r'/root/data/daily' # use your path
file_list = glob.glob(path + "/*.csv")

def read_and_label_csv(filename):
    # reads each csv file to a pandas.DataFrame
    df_csv = pd.read_csv(filename,
                         delim_whitespace=True,
                         names=['Date','Close'])                 
    df_csv.rename(columns={'Close':path_2_column}, inplace=True)
    return df_csv

# create a list of functions ready to return a pandas.DataFrame
dfs = [delayed(read_and_label_csv)(fname) for fname in file_list]
# using delayed, assemble the pandas.DataFrames into a dask.DataFrame
ddf = dd.from_delayed(dfs)
...