Поместите ваш код в функцию:
def read_two(files):
df_from_each_file = (pd.read_csv(f, sep='\t') for f in files)
return pd.concat(df_from_each_file, ignore_index=True)
Вы можете заказать имена по префиксу:
import os
byname = {}
for name in all_files:
short_name = os.path.split(name)[-1]
byname.setdefault(short_name.split('_', 1)[0], []).append(name)
Теперь byname
будет выглядеть так:
{'bird': ['bird_A_final.bed', 'bird_B_final.bed'],
'cat': ['cat_A_final.bed', 'cat_B_final.bed'],
'dog': ['dog_A_final.bed', 'dog_B_final.bed']}
Теперь поместите все фреймы данных в словарь по префиксу:
dfs = {name: read_two(files) for name, files in byname.items()}
Теперь вы получаете доступ к своим фреймам данных в формате dfs
:
{'bird': <bird_df>,
'cat': <cat_df>,
'dog': <dog_df>}
как это:
dogdf = dfs['dog']
или выполняйте обработку в цикле:
for name, df in dfs.items():
merged = df.merge(animals, on=['col'])
merged.to_csv('{}.csv'.format(name))