Python Pandas: заполнение кадра данных pd.Series в каждом элементе - PullRequest
1 голос
/ 16 июня 2020

Библиотека sktime требует очень "особого" формата данных . Для n временных рядов значения T каждой серии должны быть сохранены в pandas Dataframe pandas Series длины T следующим образом:

DataFrame:

index |   Data  
   0  | pd.Series
   1  | pd.Series 
  ... |    ...   
 n-1  | pd.Series 

Моя попытка заполнить пустой фрейм данных n = 2 и T = 3 в al oop путем чтения из другого фрейма данных не сработало. Вот моя сокращенная версия, в которой в каждой строке используется постоянный pd.Series:

import pandas as pd
df = pd.DataFrame(columns=["Data"])
for i in range(2):
    df.loc[i] = pd.Series([2, 4, 5])

Обратите внимание, что из многих примеров на сайте я знаю (1), как заполнить нормальный фрейм данных в for l oop и (2) моя попытка неэффективна, даже если она работала.

1 Ответ

1 голос
/ 16 июня 2020

pandas не хочет, чтобы вы хранили сложные объекты в ячейке, поэтому, если вы попытаетесь создать DataFrame из Series, pandas сведет его к двумерной структуре. Чтобы избежать этого, нам нужно работать с Series; 1-D структура обеспечивает размещение серии в одной ячейке.

Добавьте ваш Series к dict, создайте Series of Series с помощью конструктора basi c и сделайте его DataFrame с помощью Series.to_frame

d = {}
for i in range(2):
    d[i] = pd.Series([2, 4, 5]*(i+1))

df = pd.Series(d).to_frame('Data')

# Check they're Series
print(df.applymap(type))
#                                  Data
#0  <class 'pandas.core.series.Series'>
#1  <class 'pandas.core.series.Series'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...