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

У меня проблемы с процессом, который я делал несколько раз раньше. Я новый пользователь Python и блокнота Jupyter, и я пытаюсь преобразовать свой текстовый файл, который содержит эти данные: (списки 25k):

[X,
Y],
[Z,
X,
Y,
Z],

Это структура файла, и я пытаюсь преобразовать его в pandas dataframe (wide-columnstore) с этим кодом:

import pandas as pd
import ast
import json 

data = open("C:/Users/itamar/Desktop/SuperMushlam/How To Use Apriori Algorithm A-Z/sss.txt", 'r', encoding = 'windows-1255', errors='ignore').read().replace("\r","").replace("\n","")

remove_doulequotes = data.replace('""', '').replace('"', '')

list_of_str = list(map(lambda x: '"{x}"'.format(x=x), remove_doulequotes.split(",")))

final_data = ", ".join(list_of_str).replace('"[[', '[["').replace(']"','"]').replace(']]"', '"]]').replace('"[', '["').replace(']"]', '"]]')

data_in_list = ast.literal_eval(final_data)

df = pd.DataFrame(data_in_list)

df

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

    ---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)
<ipython-input-10-d41ed8f6586e> in <module>
     11 final_data = ", ".join(list_of_str).replace('"[[', '[["').replace(']"','"]').replace(']]"', '"]]').replace('"[', '["').replace(']"]', '"]]')
     12 
---> 13 data_in_list = ast.literal_eval(final_data)
     14 
     15 df = pd.DataFrame(data_in_list)

~\Anaconda3\lib\ast.py in literal_eval(node_or_string)
     44     """
     45     if isinstance(node_or_string, str):
---> 46         node_or_string = parse(node_or_string, mode='eval')
     47     if isinstance(node_or_string, Expression):
     48         node_or_string = node_or_string.body

~\Anaconda3\lib\ast.py in parse(source, filename, mode)
     33     Equivalent to compile(source, filename, mode, PyCF_ONLY_AST).
     34     """
---> 35     return compile(source, filename, mode, PyCF_ONLY_AST)
     36 
     37 

MemoryError: 

Есть предложения? Я не уверен, где моя проблема. Большое спасибо!

Вот что мне нужно:

enter image description here

1 Ответ

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

Предполагая, что весь ваш текстовый файл соответствует описанному вами шаблону:

[X,
Y],
[Z,
X,
Y,
Z],

Возможно, вы сможете создать искомый DataFrame с помощью следующего кода:

import pandas as pd

df_l = []
tmp_l = []
filename = "C:/Users/itamar/Desktop/SuperMushlam/How To Use Apriori Algorithm A-Z/sss.txt"
with open(filename) as f:
    for line in f:
        value = ''.join([c for c in line if c not in '[ ] ,'.split()]).strip('\n')
        value = float(value) if value.replace('.','',1).isdigit() else value
        tmp_l.append(value)
        if ']' in line:
            df_l.append(pd.DataFrame(tmp_l).T)
            tmp_l = []

df = pd.concat(df_l, ignore_index=True)
print(df)

Вывод :

   0  1    2    3
0  X  Y  NaN  NaN
1  Z  X    Y    Z

Process finished with exit code 0

Приведенное выше решение составляет список из однорядных фреймов данных (df_l), где каждый фрейм данных создается из каждого списка в вашем файле .txt. Он использует pd.concat для объединения всех этих строк данных в df_l в один df. Это решение также предполагает, что каждая строка вашего TXT-файла содержит ровно один элемент списка, и символы "[", "," и "]" не должны включаться в этот элемент.

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