Ich habe ein Beispiel Datenrahmen sieht wie folgt aus. Ich möchte eine Berechnung machen und dann das Ergebnis als neue Spalte an den aktuellen Datenrahmen anhängen.Join entsprechende Spalte zu Dataframe Pandas
A, B # this is my df, a csv file
1, 2
3, 3
7, 6
13, 14
Unten ist ein Code, den ich ausprobiert habe.
for i in range(0,len(df.index)+1,1):
if len(df.index)-1 == i:
df['C'] = str(df.iloc[i]['A']/df.iloc[i]['B'])
else:
df['C'] = str((df.iloc[i+1]['A'] - df.iloc[i]['A'])/(df.iloc[i+1]['B'] - df.iloc[i]['B'])) # I need string as dtype
df.to_csv(Out, index = False)
Dies gibt mir nur das Ergebnis der Endlosschleife, nicht das entsprechende Ergebnis in Abhängigkeit von jeder Berechnung.
A B C
1 2 2
3 3 1.33
7 6 0.75
13 14 0.93 # It is the result I'd like to see.
Kann jemand es überarbeiten? Danke im Voraus!
Sie können 'sub' anstelle eines Minuszeichens verwenden und das Schlüsselwortargument' fill_value = 0' angeben, um alles in einer Zeile auszuführen. z.B. 'df.A.shift (-1) & sub0; (df.A, fill_value = 0)/(df.B.shift (-1) & sub0; df.B, fill_value = 0)' – root
@root, ja, in der Tat - es ist viel eleganter, danke! Ich habe die Antwort aktualisiert – MaxU
Kein Problem.Ich hatte eine gröbere Lösung mit 'fill_value' aber sah nicht die nette Lösung, bis ich Ihre Antwort sah! – root