преобразование содержимого файла txt в столбцы фрейма данных pandas

#python #pandas

#питон #панды

Вопрос:

У меня есть файл .txt такого рода

 12 21 23 1 23 42 12 0  

В котором lt;12,21,23gt; являются функциями, а lt;12,21,23gt;lt;1gt; является меткой. Опять же lt;23,42,12gt; — это функции, а lt;23,42,12gt;lt;0gt; — это метка и так далее. Я хочу создать фрейм данных pandas из приведенного выше текстового файла, который содержит только один столбец в несколько столбцов. Формат фрейма данных {столбец 1,столбец 2,столбец 3,столбец 4}. И в нем нет имен столбцов. Может кто-нибудь, пожалуйста, помочь мне в этом? Спасибо

Комментарии:

1. Пожалуйста, добавьте формат фрейма данных в свой вопрос

2. Гарантированно ли они будут находиться в интервалах 3 и 1?

3. На самом деле мой текстовый файл содержит интервалы 23 и 1, где есть 23 функции и 1 результат, в одном столбце. Чтобы все было просто, я использовал этот пример из 3 и 1. Надеюсь, это поможет

Ответ №1:

 import pandas as pd  df = dict() features = list() label = '' filename = '.txt' with open(filename) as fd:  i = 0  for line in fd:  if i != 3:  features.append(line.strip())  i  = 1  else:  label = line.strip()  i = 0  df[label] = features  features = list() df = pd.DataFrame(df) df  

Ответ №2:

 import pandas as pd  with open(lt;FILEPATHgt;, "r") as f:  lines = f.readlines()  formatted = [int(line[:-1]) for line in lines] # Remove n and convert to int  labels = formatted[3::4]  features = list(zip(formatted[::4], formatted[1::4], formatted[2::4])) # You can modify this if there are more than three rows  data = {} for i, label in enumerate(labels):  data[label] = list(features[i]) df = pd.DataFrame(data)  

Прокомментируйте, если у вас есть какие-либо вопросы или вы обнаружили какие-либо ошибки, и я внесу исправления.

Ответ №3:

Сначала вы можете использовать numpy, вам нужно убедиться, что количество значений кратно 4

каждая запись в виде столбца с меткой в качестве заголовка

 a = np.loadtxt('file.txt').reshape((4,-1), order='F') df = pd.DataFrame(a[:-1], columns=a[-1])  

Выход:

 1.0 0.0 0 12.0 23.0 1 21.0 42.0 2 23.0 12.0  

каждая запись в виде новой строки

 a = np.loadtxt('file.txt').reshape((-1,4)) df = pd.DataFrame(a)  

Выход:

 0 1 2 3 0 12.0 21.0 23.0 1.0 1 23.0 42.0 12.0 0.0  

Ответ №4:

 row = [] i = 0 data = [] with open('a.txt') as f:  for line in f:  data  i = 1  row.append(int(line.strip()))  if i%4==0 and i!=0:  print(i)  data_rows_count  =1  data.append(row)  row = [] f.close() df = pd.DataFrame(data)  

приводит к тому, что df будет:

 0 1 2 3 0 12 21 23 1 1 23 42 12 0