2017-02-09 9 views
2

Wie würde ich Zeilen extrahieren, bei denen eine Spalte mit einem bestimmten Wert aus einem Dataframe übereinstimmt, der aus einer Excel-Datei erstellt wurde?Zeilen aus Pandas extrahieren Dataframe basierend auf Spaltenwert

Hier sind einige Zeilen aus dem Datenrahmen:

Food   Men  Women 
0 Total fruit  86.20 88.26 
1 Apples, Total 89.01 89.66 
2 Apples as fruit 89.18 90.42 
3 Apple juice  88.78 88.42 
4 Bananas   95.42 94.18 
5 Berries   84.21 81.73 
6 Grapes   88.79 88.13 

und dies ist der Code, den ich verwenden, um die Excel-Datei zu lesen, die Spalten der Wahl ich brauchte und das Umbenennen von ihnen in geeigneter Weise:

data1= pd.read_excel('USFoodCommodity.xls', sheetname='94-98 FAH', skiprows=76,skip_footer=142, parse_cols='A, H, K') 
data1.columns = ['Food', 'Men', 'Women'] 

# Try 1: data1 = data1[data1['Food'].isin(['Total fruit']) == True] works 
# Try 2: data1 = data1[data1['Food'].isin(['Apple, Total']) == True] doesn't work 
# Try 3: data1 = data1.iloc[[1]] returns Apples, Total but not appropriate to use integer index 
# Try 4: data1[data1['Food'] == 'Berries'] doesn't work 

Bisher konnte ich anhand der Antworten wie this, this oder here nur den ersten Index mit Food = "Total fruit" zurückgeben. Wenn ich versuche, die anderen Methoden oben ich nur die Spaltennamen erhalten, wie:

Food Men Women 

Ich bin neu in Pandas und kann nicht sehen, wo ich falsch werde. Warum kann ich die erste Zeile, wo Essen == Total Obst, aber nichts anderes?

Antwort

2

Für mich ist es schön, vielleicht Problem mit einigen Whitespaces funktioniert - entfernen Sie sie durch strip:

print (data1.Food.tolist()) 
['Total fruit', 'Apples, Total ', 'Apples as fruit', 
'Apple juice', 'Bananas', ' Berries', 'Grapes'] 

data1['Food'] = data1['Food'].str.strip() 

print (data1.Food.tolist()) 
['Total fruit', 'Apples, Total', 'Apples as fruit', 
'Apple juice', 'Bananas', 'Berries', 'Grapes'] 

data2 = data1[data1['Food'].isin(['Total fruit'])] 
print (data2) 
      Food Men Women 
0 Total fruit 86.2 88.26 

data3 = data1[data1['Food'].isin(['Apples, Total'])] 
print (data3) 
      Food Men Women 
1 Apples, Total 89.01 89.66 

data3 = data1[data1['Food'].isin(['Berries'])] 
print (data3) 
     Food Men Women 
5 Berries 84.21 81.73 
0

Mit diesem Code

data1= pd.read_excel('USFoodCommodity.xls', sheetname='94-98 FAH', skiprows=76,skip_footer=142, parse_cols='A, H, K') 
list_of_strings_to_match = ['Total fruit', 'Berries', 'Grape'] 
for index, row in data1.iterrows(): 
    if row['Food'] in list_of_strings_to_match: 
     print row 
+0

keine Zeile Ergebnisse für Beeren oder Trauben – dreamin

Verwandte Themen