2017-03-23 175 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())]