Создание пустых столбцов для CSV с использованием PANDAS и запись в файл - PullRequest
0 голосов
/ 02 октября 2019

В настоящее время я работаю над получением данных из csv (строковый тип) и разделением строки (тип int) и помещением каждого целого числа строки в отдельный столбец. Строки имеют одинаковую длину. Пока у меня есть этот код:

import pandas as pd
column_names = ['W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9', 'W10', 'W11', 'W12', 'W13', 'W14', 'W15', 'W16',
                'W17', 'W18', 'W19', 'W20']

    db = pd.read_csv(databasefile, skip_blank_lines=True,
                     names=['A', 'B', 'C', 'D'], header=0)
    db[column_names] = db['B'].str.split(',', expand=True)

Этот код работает до некоторой степени, значения из столбца B отделены от списка, а значения записаны в столбцыв кадре данных я могу проверить это, распечатав значения столбцов, такие как print(db["W2"], где значения печатаются.

Однако моя проблема заключается в том, что данные записываются в кадр данных, но не в фактический CSV,Столбцы ['W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9', 'W10', 'W11', 'W12'«W13», «W14», «W15», «W16», «W17», «W18», «W19», «W20»] отсутствуют в CSV, чтобы исправить это, я пытался использовать

db = pd.concat([db, pd.DataFrame(columns=column_names)])

Я также пытался использовать

db[column_names] = db['Winning_Numbers'].str.split(',', expand=True).to_csv(databasefile, index=False)

Это работает *, проблема в том, что он перезаписывает всю информацию в CSV

В любом случае, спасибо за чтение! Я был бы признателен за любую помощь с этой проблемой

ОБНОВЛЕНИЕ: Желаемая функция состоит в том, чтобы иметь этот CSV enter image description here

Где столбец B является строкой, это разделитьстрока в столбце B и взять каждое число в строке и поместить его в свой собственный столбец. Это делается с помощью следующего кода

    db[column_names] = db['B'].str.split(',', expand=True)

, это работает, и я могу читать данные в каждом столбце,[W1-W20] Однако CSV в настоящее время имеет только 4 столбца, я пытаюсь добавить информацию в кадре данных в CSV, но он только перезаписывает текущие данные там с помощью

to_csv

Я пытался использоватьрежим добавления для to_csv, но он никогда не добавлял данные из фрейма данных в CSV, так что, надеюсь, это больше прояснит проблему о том, как добавить данные из фрейма данных в CSV (добавление дополнительных столбцов в CSV и добавление данных вэти столбцы)

1 Ответ

1 голос
/ 03 октября 2019

Боюсь, я до сих пор не до конца понимаю, какой желаемый результат, но, возможно, это поможет вам начать. Он добавляет исходные данные с новыми столбцами к существующим данным в CSV.

import pandas as pd

column_names = ['W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9', 'W10', 'W11', 'W12', 'W13', 'W14', 'W15', 'W16',
                'W17', 'W18', 'W19', 'W20']

db = pd.read_csv(databasefile, skip_blank_lines=True, names=['A', 'B', 'C', 'D'], header=None)
db[column_names] = db['B'].str.split(',', expand=True)

with open(databasefile, 'a') as f:
    db.to_csv(f, header=False, index=False)

Если вы хотите заменить строковый столбец 'B' расширенными значениями, вы можете использовать:

db[['A']+column_names+['C','D']].to_csv(f, header=False, index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...