我要导入4000多个具有相同列的csv文件,columns=['Date', 'Datapint']
可以很方便地导入csv,并且对我来说很好。
file_paths = '/root/data/daily/'
df = dd.read_csv(file_paths+'*.csv',
delim_whitespace=True,
names=['Date','Datapoint'])
我要实现的任务是能够将'Datapoint'
列命名为.csv的文件名。我知道您可以使用include_path_column = True
将一列设置为路径。但是我想知道是否有一种简单的方法将该路径名用作列名,而不必在行中单独运行。
答案 0 :(得分:1)
我可以使用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)
答案 1 :(得分:1)
我不清楚您到底想完成什么。如果您只是想更改写入文件路径的列的名称,则可以设置include_path_column='New Column Name'
。如果您要根据每个文件的路径来命名一列,则似乎将数据连接起来会得到一个相当稀疏的数组,而我认为groupby可能会更好。