Как распаковать панды со столбцами, которые являются одновременно массивами и обычными int? - PullRequest
0 голосов
/ 26 сентября 2018

Учитывая pandas dataframe, которое выглядит следующим образом:

col1      |  col2      |  col3
[0,0,0,0]   [0,0,0,0]    0.265
[0,0,0,0]   [0,0,0,0]    0.243
[0,0,0,0]   [0,0,0,0]    0.289
[0,0,0,0]   [0,0,0,0]    0.213

Как я могу снять его так, чтобы оно выглядело примерно так?

    col_all
[0,0,0,0,0,0,0,0,0.265]
[0,0,0,0,0,0,0,0,0.265]
[0,0,0,0,0,0,0,0,0.243]
[0,0,0,0,0,0,0,0,0.289]
[0,0,0,0,0,0,0,0,0.213]

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018
Well there are actually multiple ways to do it. Unfortunately pandas does not have any function like this but you can use other
functions.In case of Python,
I'd prefer to use built-in functions in Reduce, as they would be faster as compared to using a lambda.'
using Reduce function.
import operator
import functools

list = [[1, 2], [2], [2, 3]]
ab=functools.reduce(operator.add, list)
print(ab);

**Output is** 
[1, 2, 2, 2, 3]
0 голосов
/ 26 сентября 2018

Простой способ - просто суммировать (при условии, что col1 и col2 объекты равны list s)

df.col1 + df.col2 + df.col3.transform(lambda item: [item])

0    [0, 0, 0, 0, 0, 0, 0, 0, 0.265]
1    [0, 0, 0, 0, 0, 0, 0, 0, 0.243]
2    [0, 0, 0, 0, 0, 0, 0, 0, 0.289]
3    [0, 0, 0, 0, 0, 0, 0, 0, 0.213]

Для массивов

df.agg(lambda s: np.concatenate(s, axis=None), 1)

Обратите внимание, что эти операциине будет быстрымВозможно, вам стоит подумать об отсутствии pandas, если вы собираетесь выполнять операции со столбцами, имеющими объект dtype.Рассмотрите возможность использования списка списков

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