Как преобразовать ряды панд со значениями массива в массив данных - PullRequest
0 голосов
/ 16 ноября 2018
  1. У меня есть ряд панд, значения которых являются массивом numpy. Для простоты скажем
    series = pd.Series([np.array([1,2,3,4]), np.array([5,6,7,8]), np.array([9,10,11,12])], index=['file1', 'file2', 'file3'])
file1       [1, 2, 3, 4]
file2       [5, 6, 7, 8]
file3    [9, 10, 11, 12]

Как мне развернуть его до кадра данных вида df_concatenated:

       0   1   2   3
file1  1   2   3   4
file2  5   6   7   8
file3  9  10  11  12
  1. Более широкая версия той же проблемы. На самом деле series получается из другого кадра данных в форме:

DataFrame:

              0   1
file  slide        
file1 1       1   2
      2       3   4
file2 1       5   6
      2       7   8
file3 1       9  10
      2      11  12

путем группировки по индексу 'file' с объединением столбцов.

   def concat_sublevel(data):
        return np.concatenate(data.values)

   series = data.groupby(level=[0]).apply(concat_sublevel)

Может быть, кто-нибудь увидит лучший способ перехода с датафрейма data на df_concatenated.

Caveat. Субиндекс slide может иметь разное количество значений для различных значений file. В таком случае мне нужно повторить одну из строк, чтобы получить одинаковые размеры во всех результирующих строках

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете попробовать использовать панды Dataframe из записей

pd.DataFrame.from_records(series.values,index=series.index)

Out:

    0   1   2   3
file1   1   2   3   4
file2   5   6   7   8
file3   9   10  11  12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...