2017-03-23 169 views
0

所以我有酒數據熊貓據幀索引,其中

wines_dict = { 
'Appellation': list(wine_appellations), 
'Ratings': list(wine_ratings), 
'Region': list(wine_regions), 
'Name': list(wine_names), 
'Varietal': list(wine_varietals), 
'WineType': list(wine_wine_types), 
'RetailPrice': list(wine_retail_prices) 
} 

wines_df = pd.DataFrame(
data = wines_dict, 
columns =[ 
    'Region', 
    'Ratings', 
    'Appellation', 
    'Name', 
    'Varietal', 
    'WineType', 
    'RetailPrice' 
    ] 
) 

的數據幀我試圖用wines_df.where((wines_df['Ratings'] > 95) & (~pd.isnull(wines_df['Ratings'])))切,但它仍然是返回回NaN評級。

0   NaN 
1   NaN 
2   NaN 
3   NaN 
4   97.0 
5   98.0 
6   NaN 

我該如何切片,以便它返回大於95的所有非空值?

+0

不要使用'where'。使用'wines_df [...]'來代替子集。 –

+0

爲什麼不用在哪裏?我很困惑。呵呵拿出'.where'解決了這個問題。但是關於where()的文檔http://pandas.pydata.org/pandas-docs/stable/indexing.html表明它需要一個布爾標準....所以它應該工作不應該嗎? –

+3

因爲不滿足布爾值掩碼的條件會導致'np.nan',從而返回與原始形狀相同的'DF'。 'where'&'mask'的目的不是用於切片/子集。 –

回答

1

這樣一個簡單的切片應該給你所需要的輸出

wines_df[(wines_df['Ratings'] > 95) & (wines_df['Ratings'].notnull())]