Python: разделить список на 2 подсписка с помощью элементов с вкладками - PullRequest
0 голосов
/ 05 ноября 2018

Вопрос: Как разделить список на два подсписка, где элементы разделены вкладкой в ​​элементе?

Контекст: Я хочу прочитать файл .txt, разделенный вкладками, в Pandas DataFrame. Файлы выглядят примерно так:

Столбец 1 \ т 123
Столбец2 \ t
Столбец3 \ t текст

То есть каждая строка имеет один столбец, за которым следует одна вкладка, а затем одно значение столбца (иногда без значения).

Моя идея состояла в том, чтобы прочитать файл и сохранить каждую строку как элемент списка, а затем разбить список на две части, сохранив первую часть перед вкладкой как один список и вторую часть после вкладки как другую. Затем создайте мой фрейм данных оттуда.

for file in txt_files:  #iterate over all files
  f = open(file)        #open each file individually
  lines = f.readlines() #read each line as an element into a list 
  f.close()

#make sublists columns and values

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Если я правильно понимаю, вы можете просто перенести фрейм данных read_csv даст вам delimiter='\t'.

Демо-версия:

>>> from io import StringIO           
>>> import pandas as pd                                                         
>>>                                                                             
>>> file = StringIO('''Column1\t123 
...: Column2\t 
...: Column3\ttext''')                                                      
>>>                                                                             
>>> df = pd.read_csv(file, delimiter='\t', index_col=0, header=None).T                                                                
>>> df                                                                          
>>>
0 Column1 Column2 Column3
1     123     NaN    text

(Если ваш разделитель действительно ' \t ', тогда используйте delimiter=' \t ' и engine='python').

0 голосов
/ 05 ноября 2018

Вы можете читать ваши файлы в кадре данных следующим образом:

import pandas as pd

# Empty list to store dataframe rows
df_rows = []

# Read all text files
for tf in text_files:
    # For each file
    with open(tf) as f:
        # Empty dictionary to store column names and values
        df_dict = {}

        # For each line
        for line in f:
            # Split by tab
            k, v = line.split('\t')

            # Column name as key, value as  value
            df_dict[k] = v

        # Add the dictionary to list
        df_rows.append(df_dict)

# Read the list of dictionaries as a dataframe
df = pd.DataFrame(df_rows)

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