使用列值python对excel文件进行排序

hou

我有n个excel文件,我需要根据列的值对它们进行排序。实际上,在创建子文件夹时,我需要整理放置在特定文件夹下的excel文件,并且每个子文件夹都包含具有相同名称的excel文件DEPTNAME,知道这DEPTNAME是列名,并且每个excel文件都有m个工作表,但所有工作表都具有相同的DEPTNAME

示例:一个包含4个excel文件的文件夹:

df1= pd.DataFrame({'Last Name':[‘Stark’, ‘Stark’, ‘ Stark’, ‘Stark’],
 'FirstName':['Arya', ,'Arya','Arya','Arya',],
 'DEPTNAME':['Sécu','Sécu','Sécu','Sécu']})

在此处输入图片说明

df2= pd.DataFrame({'Last Name':[‘Lannister’, ‘Lannister’, ‘ Lannister’, ‘Lannister’],
 'FirstName':['Cersei', ,'Cersei','Cersei','Cersei',],
 'DEPTNAME':['Auto','Auto','Auto','Auto']})

在此处输入图片说明

df3= pd.DataFrame({'Last Name':[‘Snow’, ‘Snow’, ‘ Snow’, ‘Snow’, ‘ Snow’, ‘Snow’],
         'FirstName':['Jon', 'Jon','Jon','Jon','Jon','Jon'],
         'DEPTNAME':['Aero','Aero','Aero','Aero','Aero','Aero']})

在此处输入图片说明

df4= pd.DataFrame({'Last Name':[‘Lannister’, ‘Lannister’, ‘ Lannister’, ‘Lannister’],
         'FirstName':['Tyrion', 'Tyrion','Tyrion','Tyrion',],
         'DEPTNAME':['Aero','Aero','Aero','Aero']})

在此处输入图片说明

现在我需要自动创建3个文件夹:SécuAeroAuto

Sécu 将包含一个Excel文件

Aero 将包含两个Excel文件

Auto 将包含一个Excel文件

知道我的初始文件夹包含n个具有多个工作表的excel文件是否可行

ky

这是一种将文件夹中的所有文件和每个文件中的所有工作表合并然后分组的一种方法,然后DEPTNAME按文件名+对该文件夹中的文件进行排序(注意:如果DEPTNAME在2个不同的Excel文件中相同,则另存为2个不同的文件在同一文件夹<-中,按要求):

def myf(folder,files_to_be_created_in_folder):
    """ folder is the path to input files and files_to_be_created_in_folder
         is the path where the directories are to be created"""
    folder = folder
    list_of_files=os.listdir(folder)
    combined_sheets={i[:-5]:pd.concat(pd.read_excel(os.path.join(folder,i),sheet_name=None)
        .values(),sort=False)for i in list_of_files}
    combined_all_files=pd.concat(combined_sheets.values(),keys=combined_sheets.keys())
    d={i:g for i,g in combined_all_files.groupby(['DEPTNAME'
             ,combined_all_files.index.get_level_values(0)])}
    to_create_folder=files_to_be_created_in_folder
    for k,v in d.items():
        newpath=os.path.join(to_create_folder,k[0])
        if not os.path.exists(newpath):
            os.makedirs(newpath)
        v.to_excel(os.path.join(newpath,f"{k[1]}.xlsx"),index=False)

myf(r'C:\path_to_files\test_folder',r'C:\path_to_write\New folder') #replace paths carefully

为了进行测试,我尝试根据这种描述文件夹树的解决方案打印文件夹树:

ptree(r'C:\path_to_files\test_folder')

test_folder/
|-- test_1.xlsx
|-- test_2.xlsx
|-- test_3.xlsx
|-- test_4.xlsx

ptree(r'C:\path_to_write\New folder') #this also has the test folder

New folder/
|-- Aero/
|   |-- test_3.xlsx
|   |-- test_4.xlsx
|-- Auto/
|   |-- test_2.xlsx
|-- Sécu/
|   |-- test_1.xlsx
|-- test_folder/
|   |-- test_1.xlsx
|   |-- test_2.xlsx
|   |-- test_3.xlsx
|   |-- test_4.xlsx

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Excel文件中使用字符串对列进行排序[使用python,pandas]

Excel使用列表对列进行重新排序

如何使用Powershell对Excel列进行排序

如何使用openpyxl在Python中将一个Excel文件的列值与另一个Excel文件的列值进行比较?

Python:对csv文件的列进行重新排序

使用熊猫对列之间的值进行排序

使用pyspark对csv文件的列进行排序

使用Excel VBA按列值对工作表数据进行排序

使用Excel公式对列进行排序和重新排序

Excel:如何按相同的列值对行进行排序

如何通过匹配值对Excel中的多列进行排序

使用具有空值的命令按三列对csv文件进行排序?

在第 16 列之后使用 bash 中的 p 值对文本文件进行排序

使用Python对文本文件中特定索引的值进行排序

使用python根据索引和非索引列对表值进行排序

在python中的文本文件中对值进行排序

按JSON中的值对python中的JSON文件进行排序

在Excel中对列进行排序

使用Python中的第二列按字母顺序对文本文件进行排序

如何使用pandas对excel文件中的数据进行排序。并对重复项进行排序

在 Pandas Python 中按两列对值进行排序

Python:在列之间交换值以在行中对它们进行排序

如何通过python中的两列对csv文件进行排序?

使用python Pandas对从字典到Excel的条目进行排序

在仅对一列的值进行排序时使用键

使用命令按三列对csv文件进行排序?

如何使用java中的某些列对CSV文件进行排序

Python,对文件进行排序

使用Python根据列表值对矩阵列进行排序