[FIXED] Wenn Bedingung, vorherigen df-Spaltenwert speichern, ohne Schleife

Ausgabe

ist es möglich, den vorherigen Spaltenwert ohne Schleife in Pandas abzurufen?

import pandas as pd
import numpy as np

df=pd.DataFrame({'a': [True, False, False, True, True, False], 'b': [0, 0, 0, 3, 4, 4]})

df
Out[427]: 
       a  b
0   True  0
1  False  0
2  False  0
3   True  3
4   True  4
5  False  4
Wenn df[‘a’] = True, Index speichern, sonst vorheriger Wert
# Attempt 1
df['c'] = np.where(df['a'], df.index, df['c'].shift(1))


# Attempt 2
df['c'] = df.index
df['c'] = np.where(df['a'], df['c'], df['c'].shift(1))

Lösung

Sie können a ffillfür den konvertierten Index verwenden, to_seriesnachdem Sie die nicht wahren Werte maskiert haben:

df['b'] = df.index.to_series().where(df['a']).ffill(downcast='infer')

Ausgang:

       a  b
0   True  0
1  False  0
2  False  0
3   True  3
4   True  4
5  False  4


Beantwortet von –
mozway


Antwort geprüft von –
Katrina (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like