1

我有 500 多个具有相同表格结构的 CSV 文件(在一个文件夹中),用于年度电力负荷数据。我想连接所有文件,但是由于所有文件都将具有相同的时间戳索引,因此我需要添加一个具有 USER ID 的列作为第一列,以使用 USER ID 和时间戳来拥有一个多索引。我正在尝试使用地图和 pd.concat。我创建了一个函数 read_and_add_filename,它将文件路径作为输入并将其读取为 CSV,将 USER ID 创建为一列,然后将所有读取的 CSV 连接为一个 pandas 数据框

一位 ID 为 0_sb_171 的消费者的 样本数据 USER 0_sb_171 的样本数据

什么数据框应该是这样的:

具有两个消费者 0_sb_171 和 1_sb_183 的示例数据 我正在尝试使用 map 和 pd.concat。我创建了一个函数 read_and_add_filename,它将文件路径作为输入并将其读取为 CSV,将 USER ID 创建为一列,然后将所有读取的 CSV 连接为一个 pandas 数据框

读取文件路径的函数,通过读取 CSV 并为 USERID 添加列来创建数据框

def read_and_add_filename(input_t):
    df= pd.read_csv(input_t)
    df['USER ID'] = Path(input_t).stem
#Main code
import pandas as pd
import os
import glob
from pathlib import Path
from dt_str_to_dt import read_and_add_filename
input_csv_path = ('C:/Users/zebaa/Dropbox/India.Indo/DER/Storage coordination/CSV files/User load csv')

#reads in all files present at input_csv_path, runs function and 
df_concat = pd.concat(map( read_and_add_filename, glob.glob(os.path.join(input_csv_path, "*-id_*.csv"))))

我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\zebaa\Documents\Python code\Data_visualization.py", line 10, in <module>
    df_concat = pd.concat(map( read_and_add_filename, glob.glob(os.path.join(input_csv_path, "*-id_*.csv"))))
  File "C:\Users\zebaa\AppData\Roaming\Python\Python37\site-packages\pandas\core\reshape\concat.py", line 228, in concat
    copy=copy, sort=sort)
  File "C:\Users\zebaa\AppData\Roaming\Python\Python37\site-packages\pandas\core\reshape\concat.py", line 280, in __init__
    raise ValueError('All objects passed were None')
ValueError: All objects passed were None
[Finished in 30.0s]
4

0 回答 0