2015-01-08 6 views
4

Я пытаюсь добавить pandas DataFrame (отдельный столбец) в существующую CSV, как и this post, но это не работает! Вместо этого моя колонка добавляется в нижней части csv и повторяется снова и снова (строки в столбце csv >>). Вот мой код:Добавить столбец Pandas DataFrame в CSV

with open(outputPath, "a") as resultsFile: 
    print len(scores) 
    scores.to_csv(resultsFile, header=False) 
    print resultsFile 

терминальный выход: 4032 <open file '/Users/alavin/nta/NAB/results/numenta/artificialWithAnomaly/numenta_art_load_balancer_spikes.csv', mode 'a' at 0x1088686f0>

Спасибо заранее!

+1

Полезны два дополнительных бита информации: 1) как выглядит существующее содержимое 'resultsFile'? (подтвердите, проверив файл вручную) и 2) как выглядит «счет» DataFrame? ('scores.head (10)' должно быть достаточно) –

+1

Он добавляет фрейм данных 'score' в конце файла, так как работает функция pandas' to_csv'. Если вы хотите добавить «баллы» в качестве нового столбца в исходном кадре данных csv, вам нужно будет прочитать csv в кадре данных, добавить столбец 'score' и затем записать его обратно в csv. –

+0

'resultsFile' - это csv из 5 столбцов:« timestamp »,« value »,« aaa »,« bbb »,« label ». Я бы хотел, чтобы 6-й был «DataSphere». Я проверил, что все столбцы имеют одинаковую длину. 'score' имеет заголовок столбца '. – BoltzmannBrain

ответ

5

Как что @aus_lacy уже предложил, вам просто нужно сначала прочитать файл CSV в кадр данных, сцепить два кадра данных и записать его обратно в файл CSV:

предполагается существующий фрейм данных под названием df:

df_csv = pd.read_csv(outputPath, 'your settings here') 

# provided that their lengths match 
df_csv['to new column'] = df['from single column'] 

df_csv.to_csv(outputPath, 'again your settings here') 

Все права сохранены.

+1

Я пытаюсь избежать открытия и чтения во всех этих данных, но это работает :) – BoltzmannBrain

+0

@ alavin89, вам нужно использовать python? – Anzel

+0

Да и панды. – BoltzmannBrain

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