Ich habe eine dataframe
und möchte zwei Spalten der vorherigen Zeile subtrahieren, vorausgesetzt, dass die vorherige Zeile den gleichen Name
Wert hat. Wenn nicht, dann würde ich gerne NAN
geben und mit -
füllen. Mein groupby
Ausdruck ergibt den Fehler TypeError: 'Series' objects are mutable, thus they cannot be hashed
, der sehr mehrdeutig ist. Was vermisse ich?Subtrahieren zwei Spalten mit einer Groupby in Pandas
import pandas as pd
df = pd.DataFrame(data=[['Person A', 5, 8], ['Person A', 13, 11], ['Person B', 11, 32], ['Person B', 15, 20]], columns=['Names', 'Value', 'Value1'])
df['diff'] = df.groupby('Names').apply(df['Value'].shift(1) - df['Value1'].shift(1)).fillna('-')
print df
gewünschte Ausgabe:
Names Value Value1 diff
0 Person A 5 8 -
1 Person A 13 11 -3
2 Person B 11 32 -
3 Person B 15 20 -21