Python 在输出文件中使用日期作为索引
我有几个excel文件,它们的文件名因日期不同而不同。我必须连接所有这些文件,并将其文件名日期作为索引列。我编写了以下代码:Python 在输出文件中使用日期作为索引,python,excel,python-3.x,pandas,Python,Excel,Python 3.x,Pandas,我有几个excel文件,它们的文件名因日期不同而不同。我必须连接所有这些文件,并将其文件名日期作为索引列。我编写了以下代码: path = r"C:\\Users\\atcs\\Desktop\\data science\\files\\1-Danny Jones KPI's\\Source\\" fileName = glob.glob(os.path.join(path, "*.xlsx")) df = (pd.read_excel(f, head
path = r"C:\\Users\\atcs\\Desktop\\data science\\files\\1-Danny Jones KPI's\\Source\\"
fileName = glob.glob(os.path.join(path, "*.xlsx"))
df = (pd.read_excel(f, header=None, sheetname = "YTD Summary_4") for f in fileName)
k = (re.search("([0-9]{1,2}\-[0-9]{1,2}\-[0-9]{4})", fileName))
concatenated_df = pd.concat(df, index=k)
concatenated_df.to_csv('tableau7.csv')
我在这里所做的是首先定义一个目录,然后将包含xlsx文件的所有文件分配给文件名。我在datadrame中定义了filename,使用正则表达式从filename中获取日期并将其分配给变量k。现在,我连接该文件以获得输出csv文件。但代码不知何故给出了一个错误:TypeError:expected string或bytes like object。谁能帮我一下我做错了什么。稍微修改一下
path = r"C:\\Users\\atcs\\Desktop\\data science\\files\\1-Danny Jones KPI's\\Source\\*.xlsx"
fileName = glob.glob(path)
l = []
for f in fileName:
df = pd.read_excel(f, header=None, sheetname = "YTD Summary_4")
df['date'] = f
l.append(df)
concatenated_df = pd.concat(l).set_index('date')
concatenated_df.to_csv('tableau7.csv')
您可以使用:
#simplify for add *.xlsx to path
path = r"C:\\Users\\atcs\\Desktop\\data science\\files\\1-Danny Jones KPI's\\Source\\*.xlsx"
fileName = glob.glob(path)
#create list of DataFrames dfs
dfs = [pd.read_excel(f, header=None, sheetname = "YTD Summary_4") for f in fileName]
#add parameter keys for filenames, remove second level of multiindex
concatenated_df = pd.concat(dfs, keys=fileName).reset_index(level=1, drop=True)
#extract dates and convert to DatetimeIndex
pat = '([0-9]{1,2}\-[0-9]{1,2}\-[0-9]{4})'
concatenated_df.index = pd.to_datetime(concatenated_df.index.str.extract(pat, expand=False))
print (concatenated_df)
如果
k
是用文件名提取的日期列表,则使用concatenated\u df=pd.concat(df,keys=k)
尽力理解以下内容。1.文件名不是字符串,而是列表。2. df
是一个生成器,而不是列表。3.当您应该传递列表或字符串时,您正在传递一个正则表达式匹配器对象。。。你知不知道python?我的数据包含字符串、浮点数和整数,我想可能有问题,任何关于错误的建议!不。如果我们看到一些数据,你告诉我们你想用这段代码实现什么。glob应该是一个带通配符的字符串。见帖子