Explodieren Sie den Datenrahmen und fügen Sie neue Spalten mit bestimmten Werten hinzu, die auf einer Bedingung basierenPython

Python-Programme
Anonymous
 Explodieren Sie den Datenrahmen und fügen Sie neue Spalten mit bestimmten Werten hinzu, die auf einer Bedingung basieren

Post by Anonymous »

Ich habe einen Datenrahmen mit 6 Spalten: 'Name', 'A', 'B', 'C', 'Val', 'Kategorie' < /p>
Es sieht so aus: < /p>
Name A B C Val Category
x 1.1 0 0.2 NA NA
y 0 0.1 0 NA NA
z 0.5 0.1 0.3 NA NA
< /code>
Ich möchte den Datenrahmen so erweitern, dass für jeden Wert, der in Spalten 'A', 'B', 'C' nicht 0 ist, eine zusätzliche Zeile erhalten. Den Spalte 'Val' wird der Wert ungleich Null zugewiesen, der zur Erweiterung geführt hat, und die Kategorie "Kategorie" basiert willkürlich, woher der Wert stammt. < /P>
Das Ergebnis sollte so aussehen: < /p>
Name A B C Val Category
x 1.1 0 0.2 1.1 first
x 1.1 0 0.2 0.2 third
y 0 0.1 0 0.1 second
z 0.5 0.1 0.3 0.5 fisrt
z 0.5 0.1 0.3 0.1 second
z 0.5 0.1 0.3 0.3 third
< /code>
Dies ist wahrscheinlich der falsche Ansatz, aber ich dachte, da ich nur drei Spalten habe, sollte ich alle Zeilen dreimal wiederholen, indem ich die Wiederholungsfunktion im Index verwende und dann durch die Zeilen durchläufe Basierend auf einer für die Schleife mit einem übersprungen, um 3 Funktionen anzuwenden, um das Ziel und die AICN alle Zeilen zuzuweisen und dann Zeilen fallen zu lassen, wobei das Ziel 0 ist. < /p>
def targeta(row):
target = row
val = 'first'
return target, val

def targetb(row):
target = row
val = 'second'
return target, val

def targetc(row):
target = row
val = 'third'
return target, val

df_repeat = df.loc[df.index.repeat(3)]

for i in range(1,len(df_repeat)-3,3):
df_repeat.iloc[['Target','Category']]=targeta(df_repeat.iloc['A'])
df_repeat.iloc[i+1][['Target','Category']]=targetb(df_repeat.iloc[i+1]['B'])
df_repeat.iloc[i+2][['Target','Category']]=targetc(df_repeat.iloc[i+2]['C'])
< /code>
Ich bin nur zu diesem Punkt gekommen und habe festgestellt, dass ich einen leeren Datenrahmen erhalte. Irgendwelche Vorschläge darüber, was zu tun ist?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post