2016-06-06 2 views
1

Я пытаюсь сохранить только индексы данных в файл. Вот то, что я пробовал:Сохранение индексов данных данных Pandas в файл

)

np.savetxt("file_name", df.index.values) 

возвращается:

TypeError: Mismatch between array dtype ('object') and format specifier ('%.18e') 

B)

df.index.values.tofile("file_name") 

возвращается:

IOError: cannot write object arrays to a file in binary mode 

C)

with open("file_name","w") as f: 
    f.write("\n".join(df_1_indexes.values.tolist())) 

Может кто-то пожалуйста, объясните, почему A) и B) не удалось? Я в недоумении.

Приветствие

+1

Это поможет нам узнать, какие объекты составляют индекс. Пожалуйста, напишите 'df.head(). Index.values' и' type (df.index) '. – unutbu

+0

'array (['A1BG', 'A1BG-AS1', 'A2LD1', 'A2M', 'A2ML1'], dtype = object)' и 'pandas.indexes.base.Index', соответственно. – WindChimes

ответ

5

Ошибка в A), вероятно, потому, что у вас есть строки или someother типа object в индексе. Спецификатор формата по умолчанию в np.savetxt, по-видимому, принимает данные float-like. Я обошел это, установив fmt='%s', хотя это, вероятно, не является надежным решением.

B) не дает никаких ошибок для меня, используя некоторые основные примеры Index и MultiIndex. Вероятно, ваша ошибка связана с конкретным типом элементов вашего индекса.

Обратите внимание, что существует более простой и надежный способ сохранить только индекс. Вы можете установить параметр to_csvcolumns как пустой список, который будет подавлять все столбцы с выхода:

df.to_csv('file_name', columns=[], header=False) 

Если индекс имеет имя, и вы хотите, чтобы имя появляется на выходе (аналогично тому, как колонны имена), удалите header=False из кода выше.