Развертывание списков, созданных лямбда-функцией после группового - PullRequest
0 голосов
/ 24 мая 2018

Я применяю лямбда-функцию после группировки кадра данных по индексу.Эта функция добавляет два элемента к исходным группам.

df.groupby(df.index).apply(lambda x: fun(x.col))    

Где функция:

def fun(x):
    return np.r_[np.repeat(x[:1],2),x,np.repeat(x[:-1],2)]

Однако он возвращает список для каждой группы,

33    [0.9526133823707408, 0.9526133823707408, 0.952...
14    [0.7399641356312007, 0.7399641356312007, 0.739...
16    [0.9932682467249898, 0.9932682467249898, 0.993...
40    [0.8378176113760183, 0.8378176113760183, 0.837...

Как я могу развернуть эти списки, чтобыУ меня каждый элемент в списке отображается в виде новой строки с соответствующим индексом?(так же, как исходная структура df)

Я попытался добавить .apply (pd.Series), но вместо этого каждый элемент развертывается в новый столбец).

Оригинальная структура:

33    0.952613
33    0.929144
33    0.903109
33    0.876384
33    0.850252
33    1.185296
33    1.155291
33    1.119522
...

1 Ответ

0 голосов
/ 24 мая 2018

Используйте Series для строки для каждого numpy array:

def fun(x):
    return pd.Series(np.r_[np.repeat(x[:1],2),x,np.repeat(x[:-1],2)])

df = df.groupby(df.index).apply(lambda x: fun(x.col))   
print (df)
          0         1         2     ...           21        22        23
33  0.952613  0.952613  0.952613    ...     1.185296  1.155291  1.155291

[1 rows x 24 columns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...