Ich möchte benachbarte Zeilen in zwei separaten Spalten vergleichen. Ich habe eine dataframe
mit zwei Spalten, Letter
und Boolean_Value
. Ich möchte eine neue Spalte erstellen, New Col
, in der der Wert True
oder False
ist.Verwenden von pd.apply() mit Verschiebung zum Vergleichen benachbarter Zeilen
für den Wert um wahr zu sein:
Die unten nächste Zeile (höheren Index) müssen Sie die gleiche Letter
Wert und die die nächste Reihe teilen sich ein Boolean_Value
von True haben.
für den Wert falsch sein:
Alle anderen Szenarien
Mein Code, liefert alle falschen Werte:
import pandas as pd
df = pd.DataFrame(data=[['A', False],
['A', True],
['B', False],
['B', False],
['B', True]]
,columns=['Letter', 'Boolean_Value'])
def my_test2(row):
try:
if row['Letter'].shift(1) == row['Letter'] and row['Boolean_Value'].shift(1) == True:
return True
else:
return False
except:
return False
df['New Col'] = df.apply(my_test2, axis=1)
print df
Ausbeuten:
Letter Boolean_Value New Col
0 A False False
1 A True False
2 B False False
3 B False False
4 B True False
gewünschte Ausgabe:
Letter Boolean_Value New Col
0 A False True
1 A True False
2 B False False
3 B False True
4 B True False