使用 dask read_csv 读取文件名作为列名

blo*_*onc 3 pandas dask

我正在导入 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'])
Run Code Online (Sandbox Code Playgroud)

我试图实现的任务是能够将'Datapoint'列命名为 .csv 的文件名。我知道您可以使用include_path_column = True. 但我想知道是否有一种简单的方法可以使用该路径名作为列名,而不必在该行中运行单独的步骤。

blo*_*onc 5

我能够使用 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)
Run Code Online (Sandbox Code Playgroud)