#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