Функция для создание датафрэйма

import pandas as pd
import glob
import re

path1 = r'C:\Users\77081\Desktop\sweeps_D20' 
path2 = r'C:\Users\77081\Desktop\sweeps_D40'
path3 = r'C:\Users\77081\Desktop\sweeps_D60'
path4 = r'C:\Users\77081\Desktop\sweeps_D80'
path5 = r'C:\Users\77081\Desktop\sweeps_D100'
path6 = r'C:\Users\77081\Desktop\sweeps_D120'
path7 = r'C:\Users\77081\Desktop\sweeps_D140'
files1 = glob.glob(path1 + "/*.S2P")
files2 = glob.glob(path2 + "/*.S2P")
files3 = glob.glob(path3 + "/*.S2P")
files4 = glob.glob(path4 + "/*.S2P")
files5 = glob.glob(path5 + "/*.S2P")
files6 = glob.glob(path6 + "/*.S2P")
files7 = glob.glob(path7 + "/*.S2P")

new_list1 = []
for filename in files1:
    df = pd.read_csv(filename, sep='\s+', skiprows= 11, header=None)
    df['V'] = filename
    df['T'] = 20
    new_list1.append(df)
dataset1 = pd.concat(new_list1, axis=0, ignore_index=True)
dataset1[['V1','V2','V3']] = dataset1['V'].str.split('=',n=2, expand=True)
dataset1.drop(['V','V1'], axis=1, inplace=True)
dataset1['V2'] = dataset1['V2'].str.replace('V_VDS', '')
dataset1['V3'] = dataset1['V3'].str.replace('V.S2P', '')
dataset1.columns = [  'F', 'A1', 'A2', 'A3', 'A4','A5', 'A6','A7', 'A8', 'T', 'B', 'C']
column_names = ['T', 'B', 'C', "F",'A1', 'A2', 'A3', 'A4','A5', 'A6','A7', 'A8']
dataset1 = dataset1.reindex(columns=column_names)

У меня есть 7 files. И из каждого files1, files2, ..., files7 я создаю датафрэйм и объединим их. Можете помочь создать функцию что бы оно создавало датафрэйм из каждого files и объединим их. filename это имя файла files1,...,7 это список из файлов.


Ответы (2 шт):

Автор решения: Алексей Белкин

Накидал на коленке, но не проверял. Должно работать.

def my_func(my_file):
    import pandas as pd
    cash_lst = []
    for filename in my_file:
        df = pd.read_csv(filename, sep=',', skiprows=10, header=None)
        cash_lst.append(df)
    cash_df = pd.concat(cash_lst, axis=0, ignore_index=True)
    return cash_df

lst_nameFile = ['name_file1', 'name_file2']
lst_df = []
for file_name in lst_nameFile:
    lst_df.append(my_func(my_file=file_name))

lst_nameFile - список имен ваших файлов

lst_df - список ваших сформированных датафреймов

→ Ссылка
Автор решения: SergFSM

Аналогичное решение. Попробуйте (я не тестировал):

import pandas as pd
from functools import partial

f = partial(pd.read_csv, sep=',', skiprows= 10, header=None)

def read_df(file_names):
    return pd.concat(map(f, file_names)))

df1 = read_df(files1)
df2 = read_df(files2)
# и так далее
→ Ссылка