我有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'
并将df2
从df1
合并到 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=true
和kotlin.compiler.incremental=true
等等。
并使用相应的文件名保存新数据框,abc_new.xlsx,file2_new.xlsx等。
有没有办法实现这种自动化?
答案 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]