在python中删除多个excel文件的索引列

在python中删除多个excel文件的索引列,python,pandas,dataframe,datetimeindex,Python,Pandas,Dataframe,Datetimeindex,我有多个具有相同列名的excel工作表。当我保存以前计算的文件时,我忘了将“Date”设置为索引,现在它们(40个)的索引列的数字都在1-200之间。如果我将它们加载到python中,它们会再次得到一个额外的索引列,从而产生两个未命名的列。我知道我可以使用glob函数访问我的所有文件。但是有没有一种方法可以访问所有文件、删除/删除未命名索引列并将新索引设置为日期列 下面是1张excel工作表的示例 df = pd.DataFrame({ '': [0, 1,2,3,4], 'Date': [19

我有多个具有相同列名的excel工作表。当我保存以前计算的文件时,我忘了将“Date”设置为索引,现在它们(40个)的索引列的数字都在1-200之间。如果我将它们加载到python中,它们会再次得到一个额外的索引列,从而产生两个未命名的列。我知道我可以使用glob函数访问我的所有文件。但是有没有一种方法可以访问所有文件、删除/删除未命名索引列并将新索引设置为日期列

下面是1张excel工作表的示例

df = pd.DataFrame({
'': [0, 1,2,3,4],
'Date': [1930, 1931, 1932, 1933,1934],
'value': [11558522, 12323552, 13770958, 18412280, 13770958],
}) 

dfs=[pd.read\u csv(file).为glob.glob中的文件(“/your/path/to/folder/*.csv”)]设置索引('Date')['value']]。

dfs=[pd.read\u csv(file).为glob.glob中的文件(“/your/path/to/folder/*.csv”)]设置索引('Date')['value']]。

使用熊猫实现这一点的快捷方法是:

df=df.drop(“”,轴=1) >>>df=df.set_索引(“日期”) >>>df 价值 日期 1930 11558522 1931 12323552 1932 13770958 1933 18412280 1934 13770958 (我是凭记忆完成上述操作的,但这类操作的一般技巧是在文档中查找适当的函数。)

您还可以在加载文件时指定标题列:

索引\u colint,int列表,默认无

列(0索引)用作数据帧的行标签。如果不通过,则不通过 没有这样的专栏。如果传递了一个列表,这些列将被合并 转换为多索引。如果使用usecols选择数据子集,则索引为 基于子集


对熊猫来说,一个快速的方法是:

df=df.drop(“”,轴=1) >>>df=df.set_索引(“日期”) >>>df 价值 日期 1930 11558522 1931 12323552 1932 13770958 1933 18412280 1934 13770958 (我是凭记忆完成上述操作的,但这类操作的一般技巧是在文档中查找适当的函数。)

您还可以在加载文件时指定标题列:

索引\u colint,int列表,默认无

列(0索引)用作数据帧的行标签。如果不通过,则不通过 没有这样的专栏。如果传递了一个列表,这些列将被合并 转换为多索引。如果使用usecols选择数据子集,则索引为 基于子集


我认为最简单的方法是将索引的第一列设置错误,然后将其用于按
Date
列重写:

import glob, os

for file in glob.glob('subset/*.xlsx'):

    df = pd.read_excel(file, index_col=[0]).set_index('Date')
    print (df)

    #new excel files

    h,t = os.path.split(file)
    df.to_excel(os.path.join(h, 'new_' + t))

    #overwrite excel files (first backup data if something failed for avoid lost data)
    #df.to_excel(file)

我认为最简单的方法是将索引的第一列设置错误,然后将其用于按
Date
列重写:

import glob, os

for file in glob.glob('subset/*.xlsx'):

    df = pd.read_excel(file, index_col=[0]).set_index('Date')
    print (df)

    #new excel files

    h,t = os.path.split(file)
    df.to_excel(os.path.join(h, 'new_' + t))

    #overwrite excel files (first backup data if something failed for avoid lost data)
    #df.to_excel(file)

这很好用。但是我如何知道将数据帧(df)保存为单个excel文件
df。to_excel('new_'+file)
抛出一个文件未找到错误。如果我尝试覆盖,它不会覆盖上一个files@Tamarie-与原始数据相同的文件夹,仅更改了文件名哦,是的,我看到了。把它只保存了1个文件(最后一个),而不是它最终工作的所有文件。原来我并没有在我的for循环中这样做。我已经拆分了代码,这就是为什么它只对一个文件执行此操作。非常感谢你的帮助。现在这个解决方案非常有效。但是我如何知道将数据帧(df)保存为单个excel文件
df。to_excel('new_'+file)
抛出一个文件未找到错误。如果我尝试覆盖,它不会覆盖上一个files@Tamarie-与原始数据相同的文件夹,仅更改了文件名哦,是的,我看到了。把它只保存了1个文件(最后一个),而不是它最终工作的所有文件。原来我并没有在我的for循环中这样做。我已经拆分了代码,这就是为什么它只对一个文件执行此操作。非常感谢你的帮助。现在这个解决方案非常有效