Python 合并CSV文件&;将列添加到每个

Python 合并CSV文件&;将列添加到每个,python,pandas,csv,Python,Pandas,Csv,我尝试合并多个CSV文件,但需要为每个文件添加一个月或其他标识符 import pandas as pd import os all_data = pd.DataFrame() files = [file for file in os.listdir('/Users/my_username/Desktop/campaign_mb_2020')] for file in files: file['month'] = [i for i in range(len(files))] 理想

我尝试合并多个CSV文件,但需要为每个文件添加一个月或其他标识符

import pandas as pd
import os

all_data = pd.DataFrame()

files = [file for file in os.listdir('/Users/my_username/Desktop/campaign_mb_2020')]

for file in files:
    file['month'] = [i for i in range(len(files))]
理想情况下,我希望每个文件都包含一个月列,但出现以下错误:

TypeError: 'str' object does not support item assignment

您正在将列指定给字符串。您首先需要读取csv文件,然后指定一个月值,然后对其进行加密:

df = pd.concat(
    [pd.read_csv(file).assign(file = file) for file in files]
).assign(
    month = lambda x: x['file'].str.slice(start=2,stop=10)
)
尝试:


在您的代码中,files变量包含您的文件名,而不是文件的内容。我试图为您的问题提供解决方案,但我需要您的部分提供更多详细信息,如此CSV文件的内容,以及您希望添加月份的位置。这很有意义。但当我运行时,我现在得到:值的长度与索引的长度不匹配。请输入此代码,然后您可以使用文件列提取文件的月份并指定月份值。2和10是示例,您必须将其与您自己的文件名匹配
from pathlib import Path
import pandas as pd


p = Path('/Users/my_username/Desktop/campaign_mb_2020')

dfs = pd.concat([pd.read_csv(file).assign(month=num) 
                             for num,file
                             in enumerate(p.glob('*.csv'))]