Как использовать операторы def-return или for-in на фреймах данных, чтобы избежать повторений в коде в python / pandas - PullRequest
0 голосов
/ 21 апреля 2020

Может кто-нибудь, пожалуйста, посмотрите нижеприведенный код и посоветуйте, что я сделал неправильно.

У меня есть 2 кадра данных panda - df и x1 Оба имеют одинаковые столбцы и имена столбцов

Мне нужно выполнить приведенный ниже набор кодов для df.Date_Appointment, x1.Date_Appointment и аналогично для df.Date_Scheduled и x1.Date_Scheduled. Таким образом, создан список для столбцов и фреймов данных.

Я пытаюсь написать один код, но, очевидно, я делаю что-то не так. Пожалуйста, совет.

import pandas as pd
df = pd.read_csv(file1.csv)
x1 = pd.read_csv(file2.csv)

# x1 is a dataframe created after filtering on one column. # df and x1 have same number of columns and column names # x1 is a subset of df ``

dataframe = ['df','x1']
column = ['Date_Appointment', 'Date_Scheduled']

def df_det (dataframe.column):

    (for df_det in dataframe.column :

        d_da = df_det.describe()
        mean_da = df_det.value_counts().mean()
        median_da = df_det.value_counts().median()
        mode_da = df_det.value_counts().mode()

        print('Details of all  appointments', '\n', 

         d_da, '\n',
         'Mean = ', mean_da,'\n', 
         'Median = ', median_da,'\n',
         'Mode = ',mode_da,'\n'))

Пожалуйста, укажите шаги. Заранее спасибо.

1 Ответ

0 голосов
/ 21 апреля 2020

Похоже, у вашей функции должно быть два аргумента - dataframe и column - оба являются списками, поэтому я сделал имена множественными.

Тогда вам нужно l oop по каждому аргументу. Обратите внимание, что вы также присваиваете кадру данных в функции то же имя, что и вашей функции, поэтому я изменил имя функции.

dataframes = [dataframe1, dataframe2]
columns = ['Date_Appointment', 'Date_Scheduled']

def summary_stats(dataframes, columns):
    for df in dataframes:
        for col in cols:
            df_det = df.loc[:, col]
            # print summary stats about df_det
...