Как собрать dict.keys из 2d-массива (который конвертируется из 3d-массива) и pd.read_excel (файл) - PullRequest
0 голосов
/ 14 декабря 2018

Я преобразовал трехмерный массив: 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]]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...