Dataframes mit einer For-Schleife über eine Dictionary aktualisieren

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
NinoBaumann
User
Beiträge: 80
Registriert: Samstag 25. April 2020, 19:03

Hallo,

ich habe mehrere Dataframes erstellt. All diesen Dataframes möchte ich jetzt noch drei Spalten aus einem bestimmten Dataframe hinzufügen. Dazu habe ich ein Dictionary erstellt und über eine For-Schleife will ich mit dem Pandas pd.concat Befehl die bestehenden Datframes um die Drei neuen Spalten ergänzen. Der Code bringt auch keinen Fehler aber die Dataframes werden auch nicht um die Spalten ergänzt. Wie löse ich das Problem?

Code: Alles auswählen

dict_dataframe_collection_19_cols = {
    'Number of Machines': df_number_of_machines,
    'Shift Hours Paid': df_shift_hours_paid,
    'Shift Hours Available': df_shift_hours_available,
    'Direct Manning Operator': df_direct_manning_operator,
    'Direct Manning Jobsetter': df_direct_manning_jobsetter,
    'Direct Manning Teamleader': df_direct_manning_teamleader,
    'Cycle Time Target': df_cycle_time_target,
    'Cycle Time Total': df_cycle_time_total,
    'OEE': df_oee,
    'STD Labor Hrs per Pcs': df_std_hr_per_pc,
    'STD Labor Hrs per Pcs Operator': df_std_hr_per_pc_operator,
    'STD Labor Hrs per Pcs Jobsetter': df_std_hr_per_pc_jobsetter,
    'STD Labor Hrs per Pcs Teamleader': df_std_hr_per_pc_teamleader,
    'Monthly OT Hours Adjustment': df_overtime_hours,
    'Gross Rates': df_pcs_per_hour_gross,
    'Net Rates': df_pcs_per_hour_net,
}

dict_dataframe_collection_24_cols = {
    'Daily Volume': df_volume_daily,
    'Volume': df_volume,
    'Operator Hrs per Day': df_hours_per_day_operator,
    'Jobsetter Hrs per Day': df_hours_per_day_jobsetter,
    'Teamsleder Hrs per Day': df_hours_per_day_teamleader,
    'Capacity': df_capacity,
}

# Spaltennamen des Volume Dataframes und des Salesplan Dataframes
header_list_salesplan = df_volume_salesplan.columns
header_list_volume = df_volume.columns

dict_dataframe_collection = [
    (dict_dataframe_collection_19_cols, header_list_salesplan),
    (dict_dataframe_collection_24_cols, header_list_volume)
]

for dict_collection, column_header in dict_dataframe_collection:
    
    for key in dict_collection:
        
        df = dict_collection[key]
        
        # Spaltennamen ändern
        if dict_collection == dict_dataframe_collection_19_cols:
            df.columns = [i for i in column_header if i != 'Part Number']
            
        else:
            df.columns = [i for i in column_header if i != 'Part Number']

        # df_index_columns (Index-Spalten) definieren
        df_index_columns = df_production_data[
            ['Teilenr.', 'Arbeitsgang', 'Arbeitsplatzkürzel']
        ]

        # Füge die Index-Spalten an den Anfang des DataFrames hinzu
        dict_collection[key] = pd.concat([df_index_columns, df], axis=1)
Sirius3
User
Beiträge: 18215
Registriert: Sonntag 21. Oktober 2012, 17:20

Spalten fügt man hinzu, indem man einfach neue Spalten definiert:

Code: Alles auswählen

df["neue Spalte"] = werte
Deinen Code verstehe ich nicht und ich weiß auch nicht, wie dieser mit Deiner Frage zusammenhängt.
Wenn Du 22 einzelne Dataframes hast, machst Du vorher aber schon etwas falsch.
NinoBaumann
User
Beiträge: 80
Registriert: Samstag 25. April 2020, 19:03

Die Dataframes müssen einzeln sein. Jedes Dataframe hat 30 Spalten. Wenn ich das alles in eins packe, blickt man da nicht mehr durch. Des weiteren werde diese miteinander alle verrechnet. So ist halt die Aufgabenstellung. Die Dataframes steht alle in dem Dictionary. Jetzt möchte ich jedem dieser Dataframes diese drei Spalten hinzufügen. Aber aus irgendeinem Grund werden diese nicht hinzugefügt.
NinoBaumann
User
Beiträge: 80
Registriert: Samstag 25. April 2020, 19:03

Danke. Ist gelöst.
Antworten