2016-12-05 7 views
2

Невозможно выяснить, почему .dropnan() не выбрасывает ячейки со значениями NaN?Капля NaN в pandas python

помогите пожалуйста, я просмотрел документацию по панде, не знаю, что я делаю неправильно ????

import pandas as pd 
import quandl 

import pandas as pd 

df = quandl.get("GOOG/NYSE_SPY") 
df2 = quandl.get("YAHOO/AAPL") 

date = pd.date_range('2010-01-01', periods = 365) 

df3 = pd.DataFrame(index = date) 

df3 = df3.join(df['Open'], how = 'inner') 

df3.rename(columns = {'Open': 'SPY'}, inplace = True) 

df3 = df3.join(df2['Open'], how = 'inner') 

df3.rename(columns = {'Open': 'AAPL'}, inplace = True) 

df3['Spread'] = df3['SPY']/df3['AAPL'] 

df3 = df3/df3.ix[0] 

df3.dropna(how = 'any') 

df3.plot() 

print(df3) 
+0

Это не операция на месте. Либо 'df3.dropna (how = 'any', inplace = True)' или 'df3 = df3.dropna (how = 'any')' будет работать. – ayhan

ответ

2

изменение df3.dropna(how = 'any') в df3 = df3.dropna(how = 'any')

1

Я попытался воспроизвести проблему с помощью простого CSV-файла:

In [6]: df 
Out[6]: 
    a b 
0 1.0 3.0 
1 2.0 NaN 
2 NaN 6.0 
3 5.0 3.0 

Оба df.dropna (как = 'любой'), а также df1 = df.dropna (how = 'any'). Даже работает только df.dropna(). Я задаюсь вопросом, является ли ваша проблема в том, что вы выполняете деление в предыдущей строке:

df3 = df3/df3.ix[0] 
df3.dropna(how = 'any') 

Например, если я делю на df.ix [1], так как один из элементов является NaN, он преобразует все элементы столбца в результате к NaN, а затем, если я удалю NaN с помощью dropna, он удалит все строки:

In [17]: df.ix[1] 
    Out[17]: 
    a 2.0 
    b NaN 
    Name: 1, dtype: float64 

    In [18]: df2 = df/df.ix[1] 
    In [19]: df2 
    Out[19]: 
     a b 
    0 0.5 NaN 
    1 1.0 NaN 
    2 NaN NaN 
    3 2.5 NaN 

    In [20]: df2.dropna() 
    Out[20]: 
    Empty DataFrame 
    Columns: [a, b] 
    Index: [] 
Смежные вопросы