2017-02-09 17 views
2

ExcelがExcelファイルから作成されたデータフレームの特定の値と一致する行を抽出するにはどうすればよいですか?ここでパンダの行を列の値に基づいて抽出する

DATAFRAMEから数行です:

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 

が、これは私が必要な列を選択し、それらを適切に名前変更、私はExcelファイルを読み込むために使用されるコードです:

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 

これまでのところ、thisthis、またはhereなどの回答に基づいて、私はFood = "Total fruit"の最初のインデックスを返すことしかできませんでした。私は上記の他の方法を試したときだけのようなカラム名を取得:

Food Men Women 

は私がパンダに新しいですし、私が間違っているつもり場所を確認することはできません。 Food ==フルーツではなく他のものではない最初の行を抽出するのはなぜですか?

答えて

2

それは素敵な作品、いくつかの空白の問題点 - 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

利用多分このコードは私のために

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

をベリーやブドウなし行結果 – dreamin

関連する問題