Объединение Pandas данных с Numpy массивами - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть массив массивов, которые я хочу объединить с фреймом данных.

arrays=[np.array(i) for i in [[1,2],[5,6,7],[]]] #let me illustrate the arrays like this

df=pd.DataFrame({'Col':['x','y','z']})

Каждый элемент массива соответствует строке в df. Это мой желаемый вывод:

ht

Вот способ, которым вы могли бы продублировать строки df для размещения входящих в массив элементов:

df.loc[df.index.repeat([max(1,len(i)) for i in arrays])]

Спасибо

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Вы можете сделать следующее:

import numpy as np
import pandas as pd
from itertools import product

arrays = [np.array(i) for i in [[1, 2], [5, 6, 7], []]]
df = pd.DataFrame({'Col': ['x', 'y', 'z']})

# this creates a mesh (cross-product) Dataframe
mesh = pd.DataFrame([pair for co in zip(df['Col'], arrays) for pair in product(*co)],
                    columns=['Col', 'n'])

# merge with the original Dataframe
result = df.merge(mesh, on='Col', how='left').fillna(0)

Вывод

  Col    n
0   x  1.0
1   x  2.0
2   y  5.0
3   y  6.0
4   y  7.0
5   z  0.0
0 голосов
/ 15 апреля 2020
df=pd.DataFrame({'Col':['x','y','z']})

arrays=[i for i in [[1,2],[5,6,7],[]]] #let me illustrate the arrays like this

df['newcol']=arrays


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