Заменить строку в pandas фрейме данных значениями из словаря - PullRequest
0 голосов
/ 17 апреля 2020

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

Сначала я создал пустой массив numpy, используя np.empty, используя измерения моих данных. Затем я преобразовал это в pandas DataFrame. Затем я сделал следующее:

with open(input_file) as csvfile:
    reader = csv.DictReader(csvfile,delimiter='\t')
    row_num = 0
    for row in reader:
        for key, value in row.items():
            df.loc[row_num,key] = value
        row_num += 1

Это прекрасно работает, за исключением того, что мой файл имеет 900 000 столбцов, поэтому он невероятно медленный. Это также похоже на то, что pandas может сделать более эффективно, но я не смог найти как. Словарь для каждой строки, заданной DictReader, выглядит следующим образом:

{'columnName1':<value>,'columnName2':<value> ...} 

Где значения - это то, что я хочу поместить в кадр данных в эти столбцы для этой строки.

Спасибо!

1 Ответ

0 голосов
/ 17 апреля 2020

Итак, что вы можете сделать в этом случае, это создать меньшие куски вашего большого файла данных CSV. У меня была та же проблема с 32-гигабайтным Csv-файлом, поэтому мне пришлось собирать куски. После их прочтения вы можете работать с ними.

# read the large csv file with specified chunksize 
df_chunk = pd.read_csv(r'../input/data.csv', chunksize=1000000)

chunksize = 1000000 устанавливает, сколько строк считывается за один раз

Полезный веб-сайт:

https://towardsdatascience.com/why-and-how-to-use-pandas-with-large-data-9594dda2ea4c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...