Я преобразовал трехмерный массив: 10 * 600 * 12 в двумерный массив: 10 * 7200, хочу сохранить его как новый 'TrainData', а затем объединить его с другим файлом Excel 10 * 12 ('Target':10 * 6, 'TargetName': 10 * 6).Я знаю np.concatenate и dict (zip ()), но Индекс всегда неверен, у кого-нибудь есть идеи?Сначала я попытался сохранить новое «TrainData», а затем прочитать его с помощью панд, но индекс становится 9 * 7200.
import csv
import glob
import pandas as pd
import numpy as np
csv_files = glob.glob('Beispiel/*.csv')
last_df = None
alist = []
for files in csv_files:
df = pd.read_csv(files)
alist.append(df)
data = np.stack(alist)
print(np.shape(data))
x = np.transpose(data).reshape(10, -1)
print(np.shape(x))
np.savetxt("Beispiel/Input.csv", x, delimiter=',', header='')
y = pd.read_excel('Prozessstoerung3/Beispiel.xlsm', sheetname=0)
print(y.head(3))
print(y.shape)
results
(10, 600, 12)
(10, 7200)
Target Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5 \
0 0 1 0 0 1 1
1 0 1 1 1 1 1
2 0 1 0 1 0 0
TargetName Unnamed: 7 Unnamed: 8 Unnamed: 9 Unnamed: 10 Unnamed: 11
0 None Temp None None Modul4 Modul5
1 None Temp Modul1 Modul3 Modul4 Modul5
2 None Temp None Modul3 None None
(10, 12)
Некоторые попытки:
TrainData = pd.concat([x, y.values[:,5]], axis=1, sort=False)
print(TrainData)
и результаты: TypeError: невозможно объединить объект типа "";действительны только объекты pd.Series, pd.DataFrame и pd.Panel (не рекомендуется)
Моя цель - создать dict.keys, например
dict_keys[('TranData' 'Target' 'TargetName')]
array(10*7200) array(10*6) array(10*6)
Проблема решена, потому чтоМассив numpy не может напрямую обращаться с пандами.Решение ниже:
new_df = pd.DataFrame(x)
Name_of_data = ['Input', 'Target', 'TargetName']
new_data = dict(zip(Name_of_data, [new_df, y.values[:,0:5], y.values[:,6:11]]))