Sind also drei Werte vorhanden mache nichts, gehe zur nächsten Zeile, sind zwei Zellen gefüllt, kopiere den mittleren Wert nach rechts, lösche alten Wert, also lasse die mittlere frei und gehe zur nächsten Zeile. Die Liste ist sehr lang, daher soll der Zellenwechsel durch die Spaltenbereiche durchlaufen. Versucht habe ich bisher map, applymap, apply, lambda, conditional. Es wird immer nur die mittlere Spalte kopiert, nicht aber die else Bedingung ausgeführt. Auch die loc Funktion hat in der unten dargestellten Form nicht funktioniert.
Bilder der Tabellen:
Ausgangstabelle:
Gewünschte Tabelle:
Code: Alles auswählen
import pandas as pd
df = pd.read_csv("C:/DATA/daten/shift_value_if.csv",
sep=";",
decimal=",",
usecols=["col_X", "col_Y", "col_Z"])
df['col_K'] = df['col_Y'].apply(lambda x: 'col_Z' if x == '-' else x)
print(df)
Code: Alles auswählen
df.loc[df['col_Z'] == '-', 'col_Z'] = df['col_Y']