2016-06-23 7 views
1

Ich habe eine Liste, X, die eine Reihe von rechtlichen Werte für eine Spalte enthält. Sprich, ich habe Spalte A. Ich möchte Elemente in df['A'] ersetzen (auf leere Zeichenfolge setzen), wenn ihr Wert nicht in X ist. Wie kann ich das effizient in Pandas machen?Pandas: Ersetzen Spaltenwerte zu leeren, wenn nicht in vordefinierten Liste

Ich weiß, es gibt isin(), aber das überprüft nur, ob die Werte vorhanden sind und gibt eine Reihe von True/False zurück.

Antwort

1

versuchen Sie dies:

df.loc[~df.A.isin(X), 'A'] = '' 
2

Sie können es anwenden mit:

import pandas as pd 

x = ['a', 'b', 'c'] 
data = {'foo':['a', 'a', 'q', 'p']} 
df = pd.DataFrame.from_dict(data) 

df_new = df['foo'].apply(lambda i: i if i in x else '') 
Verwandte Themen