2017-03-17 72 views
0

我使用熊貓閱讀下面附帶的excel圖像文件。熊貓:基於列名和數據獲取excel數據

file.xls

import pandas as pd 
file = "file.xls" 
xl = pd.ExcelFile(file) 
df1 = xl.parse("Sheet1") 

按excel文件,我想打印什麼「約翰」銷售換句話說,我想通過上校名稱「賣家」,值「約翰」,上校名「水果」 & '蔬菜'。 O/p應該是 香蕉,芒果,馬鈴薯&豌豆。

'John'在Col'Seller'&'purchaser'中,所以我想提及Col Name。 是否有可能像這樣或這樣的熊貓提取部分數據,我需要從每個期望的列的價值指數('約翰'在這裏)得到它。

+0

你需要告訴我們什麼在excel工作表中的輸入'看起來像什麼,你期望什麼'輸出'。它有助於思考過程。你可以打印輸入和輸出圖像,或者在輸入和輸出之前用'backquote'或輸入'4 spaces'輸入論壇上的數據。 – everestial007

回答

0

你可以在這裏提供多個口罩,以解決這個問題

mask1 = df['Seller'] == 'John' 
mask2 = df['Buyer'] == 'John' 

john = df[mask1 | mask2] 
0

我認爲你需要boolean indexingloc由布爾Mask選擇列:

print (df['Seller'] == 'John') 
0 False 
1 False 
2 False 
3  True 
Name: Seller, dtype: bool 

df1 = df.loc[df['Seller'] == 'John', ['fruit','vegetables']] 
print (df1) 
    fruit vegetables 
3 mango  Pea 

如果需要通過lower案值進行比較:

df1 = df.loc[df['Seller'].str.lower() == 'john', ['fruit','vegetables']] 
print (df1) 
    fruit vegetables 
0 banana  Potato 
3 mango  Pea 

此外,如果需要返回所有列只是刪除loc

df1 = df.loc[df['Seller'].str.lower() == 'john'] 
print (df1) 
    Seller fruit vegetables purchaser 
0 john banana  Potato  Trump 
3 John mango  Pea  Mark 
+0

我認爲它會工作,如果我使用pandas.read_csv('file.csv')。我正在使用pandas.ExcelFile('file.xlsx')。 –

+0

我想你需要['read_excel'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html) – jezrael