#python #arrays #pandas #dataframe
#python #массивы #pandas #фрейм данных
Вопрос:
Я пытаюсь «преобразовать» информацию о строках фрейма данных от 0 до 15 и столбцах col1 до col16 в изображение (16×16)
Я считываю фрейм данных из файла .txt:
df = pd.read_csv('User1/Video1.txt', sep="s |t |s t |t s ", header=None, names=headers, engine='python', parse_dates=parse_dates)
date arrow col1 col2 ... col13 col14 col15 col16
0 2020-11-09 09:53:39.552 -> 0.0 0.0 ... 0.0 0.0 0.0 0.0
1 2020-11-09 09:53:39.552 -> 0.0 2.0 ... 0.0 0.0 0.0 0.0
2 2020-11-09 09:53:39.552 -> 0.0 0.0 ... 0.0 0.0 6.0 6.0
3 2020-11-09 09:53:39.552 -> 0.0 0.0 ... 0.0 0.0 0.0 0.0
4 2020-11-09 09:53:39.586 -> 0.0 9.0 ... 0.0 7.0 0.0 0.0
... ... ... ... ... ... ... ... ... ...
15 2020-11-09 09:54:06.920 -> 4.0 0.0 ... 4.0 4.0 0.0 0.0
После создания пустой матрицы img = np.zeros((16, 16, 3), dtype=np.uint8)
я хочу выполнить итерацию по фрейму данных для передачи информации о столбцах.
Для этого я думал использовать df.itertuples
, но у меня возникли проблемы с заполнением скобок.
for row in df.itertuples():
img[]][] = row[]
Можете ли вы дать какой-либо совет? Спасибо.
Ответ №1:
Использование DataFrame.iloc
np.resize
#import numpy as np
np.resize(df.iloc[:16, -16:].to_numpy(), (16, 16, 3))
если ваши столбцы не выровнены по правому краю, вы можете выполнить фильтрацию с помощью 'col'
np.resize(df.filter(regex='col').iloc[:16, :].to_numpy(), (16, 16, 3))