合并2个数据帧并保存目录中所有文件的输入

时间:2017-04-26 11:36:31

标签: python pandas

我有2个目录,包含这些文件。

abc_complete.xlsx

for id name sex 1 jon m 2 sam m 3 elle f 4 bob m 我将它带入pandas dataframe(df1)

它包含列:

abc_before.xlsx
对于new_sex f f f f pandas df,

将是(df2):

'sex'

我必须从df1删除'new_sex'并将df2df1合并到 df1 = pd.read_excel('path/to/file1_complete.xlsx') df2 = pd.read_excel('path/to/file1_before.xlsx') df1.drop('sex', axis=1, inplace=True) #dropping column 'sex' from df1 df1['sex'] = df2['new_sex'] #joining new sex column from df2 df1.to_excel('path/to/file1_new.xlsx')

我的方法:

Dir1 and Dir2

这工作正常,但我想要一个自动流程,它会从我的file2_complete.xlsx file2_before.xlsx中获取文件。 这也是xyz_complete.xlsx xyz_before.xlsx一次kotlin.incremental=truekotlin.compiler.incremental=true等等。

并使用相应的文件名保存新数据框,abc_new.xlsx,file2_new.xlsx等。

有没有办法实现这种自动化?

1 个答案:

答案 0 :(得分:0)

考虑这种方法:

import glob
import os

complete_dir = r'C:\Temp\.data\Dir1'
before_dir = r'C:\Temp\.data\Dir2'
# result dir
new_dir = r'C:\Temp\.data\Dir3'

files = glob.glob(os.path.join(complete_dir, '*.xlsx'))


def process_file(fn, complete='_complete', before='_before', new='_new'):
    fn2 = os.path.join(before_dir, os.path.basename(fn.replace(complete,before)))
    new = os.path.join(new_dir, os.path.basename(fn.replace(complete,new)))
    print('processing [{}] ...'.format(fn))
    pd.read_excel(fn, usecols=['id','name']) \
      .assign(new_sex=pd.read_excel(fn2, usecols=['new_sex'], squeeze=True)) \
      .to_excel(new, index=False)

[process_file(f) for f in files]