Python 如何在Dataframe的列中包含源文件

Python 如何在Dataframe的列中包含源文件,python,pandas,Python,Pandas,我有一个50多个Excel文件的列表,我循环并合并到一个数据框中。但是,我需要知道数据的来源,因为数据将在这些文件中重复 每个文件名都是报告的日期。由于该数据是时间序列数据,我需要将该日期拉入数据框以进行进一步的操作 导入操作系统 导入glob 作为pd进口熊猫 路径=r“路径” 扩展名='xls*' os.chdir(路径) files=glob.glob('*.{}'。格式(扩展名)) 文件\u df=pd.concat([pd.read\u excel(fp,usecols=[0,15],

我有一个50多个Excel文件的列表,我循环并合并到一个数据框中。但是,我需要知道数据的来源,因为数据将在这些文件中重复

每个文件名都是报告的日期。由于该数据是时间序列数据,我需要将该日期拉入数据框以进行进一步的操作

导入操作系统
导入glob
作为pd进口熊猫
路径=r“路径”
扩展名='xls*'
os.chdir(路径)
files=glob.glob('*.{}'。格式(扩展名))
文件\u df=pd.concat([pd.read\u excel(fp,usecols=[0,15],header=None)用于文件中的fp),忽略\u index=True)
我得到了预期的数据帧。我只是不知道如何将源文件名作为第三列。我以为在pd.read_excel()中有这样做的理由,但我找不到它

例如,我有以下文件的列表:

02-2019.xlsx

03-2011.xls

04-2014.xls


我想在组合数据框中包含来自该文件的数据旁边的文件名。

可能使用
pd.concat()中的
keys=
参数。

然后,您可以
重置\u index()
并将
转换为\u datetime()


你好我觉得你很接近。我认为它不适用于ignore_index=True。当我把它说出来的时候,我就明白你说的了。这听起来对你合适吗?只是确保我没有搞砸其他事情:)@RussW是的。
keys
参数将创建一个索引,因此传递
ignore\u index=True
将导致忽略键。删除
ignore\u index=True
,您就应该拥有您所需要的。
import os
import glob
import pandas as pd

path = r"path"
extension = 'xls*'
os.chdir(path)
files = glob.glob('*.{}'.format(extension))

# remove ignore_index=True otherwise keys parameter won't work
files_df = pd.concat([pd.read_excel(fp, usecols=[0,15], header=None) for fp in files], keys=[f"{fp.split('.')[0]}" for fp in files])
fp.reset_index(inplace=True)

fp['index'] = pd.to_datetime(fp['index'])