2015-05-07 1 views
1

Я создал следующий DataFrame:разреженных DataFrame возвращает AttributeError

trains = np.arange(100) 
tresholds = [10, 20, 30, 40, 50, 60] 
tuples = [] 
for i in trains: 
    for j in tresholds: 
     tuples.append((i, j)) 

index = pd.MultiIndex.from_tuples(tuples, names=['trains', 'tresholds']) 
matrix = np.empty((len(index), len(trains))) 
matrix.fill(np.nan) 
df = pd.DataFrame(matrix, index=index, columns=trains, dtype=float) 

Этот DataFrame заполняется с использованием df.loc[(x, y), z] индексации, но она содержит более NaN, чем реальные цифры, поэтому я хотел бы создать разреженный DataFrame. Но df.to_sparse() дает мне this error (full trace).

+0

Похоже, что проблема заключается в попытке распечатать результат, какую версию ipython, панды вы используете? Если вы запустили свой код за пределами ipython, это сработает? – EdChum

+0

При работе за пределами iPython (только python в терминале) это дает мне ошибку где-то в библиотеке pandas. – JNevens

+0

Я запускаю Pandas 0.15.2 и IPython 3.0.0 – JNevens

ответ

2

Все нан-столбцы являются багги-банкоматом в таком виде преобразования. Если у вас уже есть SparseFrame, добавление столбца nan будет работать.

Если вы сделали это:

df.iloc[0] = 0 
df.to_sparse() 

работы.

+2

Я открыл здесь проблему: https://github.com/pydata/pandas/issues/10079; Хотелось бы получить тянущие запросы от людей, заинтересованных в улучшении разреженности !. – Jeff

+0

Так что в основном проблема кроется с наном. Поэтому, если бы я, например, заполнил dataframe значениями -1, а затем представил свои собственные значения (которые всегда будут положительными). Преобразование в разреженный фреймворк с параметром -1 в качестве аргумента будет работать? – JNevens

+0

его не «нан». Фактически это означает недостающее значение. Его полностью пустая конструкция на основе столбца. Обычная процедура не относится к этому делу должным образом. – Jeff

Смежные вопросы