Ich habe Dataframe wie:
Jetzt möchte ich Spalte V basierend auf den Bedingungen für I1, I2 und I3 hinzufügen. Die Bedingungen sind wie:
v = 1 if I1>23 and I2.str.contains('abc')
v = 2 if I3 == 20
v == ...............
...................
Eine Zeile kann mehrere Bedingungen erfüllen. Ich möchte solche Zeilen multiplizieren und die Zeilen herausfiltern, die keine Bedingung erfüllen, wie beispielsweise angenommen, dass N1 für V = 1,2 und 3 erfüllt ist. Während N2 keine erfüllt und N3 erfüllt v = 2. Ich möchte, dass der endgültige Datenrahmen wie folgt aussieht:
Könnte mir bitte jemand dabei helfen? Vielen Dank.
Wenn ich Ihre Frage richtig verstanden habe, nehmen wir an, Sie haben einen Datenrahmen wie den folgenden:
df = pd.DataFrame({
"NAME": [ "N1", "N2", "N3" ],
"I1": [ 1, 4, 4 ],
"I2": [ 2, 5, 2 ],
"I3": [ 3, 6, 6 ]
})
dh:
>>> df
NAME I1 I2 I3
0 N1 1 2 3
1 N2 4 5 6
2 N3 4 2 6
Um Ihr Beispiel zu reproduzieren, nehme ich an , dass die Bedingungen sind I1 = 1
, I2 = 2
und I3 = 3
:
cond1 = df["I1"] == 1
cond2 = df["I2"] == 2
cond3 = df["I3"] == 3
Um den erwarteten Datenrahmen zu erstellen, haben Sie folgende Möglichkeiten:
result = pd.concat([
df[cond1].assign(V=1),
df[cond2].assign(V=2),
df[cond3].assign(V=3)
])
Ergebnis:
>>> result
NAME I1 I2 I3 V
0 N1 1 2 3 1
0 N1 1 2 3 2
2 N3 4 2 6 2
0 N1 1 2 3 3
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen