2017-12-02 1 views
-1

Ich habe eine Pandas Datenrahmen mit einer Tabelle, die ich von einem URL analysiert haben:Filtering für Kriterien in Pandas Dataframe Python

df1 = df['Internet Points'] 

Ich:

dfs = pd.read_html('https://pythonprogramming.net/parsememcparseface/', header = 0) 
for df in dfs: 
    print(df) 

ich eine bestimmte Spalte Internet Points genannt isoliert haben d mag es, diese Spalte nach Internet Points > 1000 zu filtern. Ich habe versucht:

if df1 > 10000: 
print(df1) 

Allerdings bekomme ich eine Fehlermeldung: Valueerror: Der Wahrheitswert einer Serie ist nicht eindeutig. Verwenden Sie a.empty, a.bool(), a.item(), a.any() oder a.all().

+3

Versuchen Sie 'df1 [df1> 10000]' eine einfache boolesche Indizierung – Dark

+0

Mögliches Duplikat von [Wahrheitswert einer Serie ist mehrdeutig. Verwenden Sie a.empty, a.bool(), a.item(), a.any() oder a.all()] (https://stackoverflow.com/questions/36921951/truth-value-of-a- series-is-ambiguous-use-a-leer-a-bool-a-item-a-any-o) – wwii

+0

danke das funktioniert – NthA

Antwort

0

Sie suchen wahrscheinlich so etwas wie dieses

for _, val in df1.iteritems(): 
    if val > 1000: 
     print(val) 

Oder Sie können es auch tun, indem sie unter Verwendung des Verfahrens map

df1.map(lambda x: x if x > 1000 else None) 

Nachdem Sie herausgefiltert haben die Spalte df1 = df['Internet Points'], die Variable df1 wird ein pandas.core.series.Series Typ, der im Grunde ein Series ist. Wenn Sie es mit df1 > 10000 filtern, was man bekommt, ist nur ein weiterer Series mit Boolesche Werte, so können Sie auch etwas tun, wie unten:

print(df1[df1>10000]) 

Wenn Sie die Ausgabe eines Array möchten, können Sie auch

print(df1[df1>10000].values)