У меня есть список массивов numpy - например:
Позволяет назвать это LIST_A:
[array([ 0. , -11.35190205, 11.35190205, 0. ]),
array([ 0. , 36.58012599, -36.58012599, 0. ]),
array([ 0. , -41.94408202, 41.94408202, 0. ])]
У меня есть список списков, которые являются указателями для каждого из массивов numy вПриведенный выше список массивов NumPy:
Давайте назовем этот List_B:
[['A_A', 'A_B', 'B_A', 'B_B'],
['A_A', 'A_D', 'D_A', 'D_D'],
['B_B', 'B_C', 'C_B', 'C_C']]
Я хочу создать pandas dataframe
из этих объектов, и я не уверен, как я могу это сделать безсначала создайте объекты серии для каждого из numpy arrays
в LIST_A с соответствующим индексом в LIST_B (т. е. индекс LIST_A[0]
равен LIST_B[0]
и т. д.), а затем выполните pd.concat(s1,s2,s3...)
, чтобы получить нужный кадр данных.
В приведенном выше случае я могу построить желаемый фрейм данных следующим образом:
s1 = pd.Series(list_a[0], index=list_b[0])
s2 = pd.Series(list_a[1], index=list_b[1])
s3 = pd.Series(list_a[2], index=list_b[2])
df = pd.concat([s1,s2,s3], axis=1)
0 1 2
A_A 0.000000 0.000000 NaN
A_B -11.351902 NaN NaN
A_D NaN 36.580126 NaN
B_A 11.351902 NaN NaN
B_B 0.000000 NaN 0.000000
B_C NaN NaN -41.944082
C_B NaN NaN 41.944082
C_C NaN NaN 0.000000
D_A NaN -36.580126 NaN
D_D NaN 0.000000 NaN
В моем реальном приложении размер перечисленных выше списков исчисляется сотнями, поэтому я не хочу создавать сотни объектов сериии затем объединить их все (разве это единственный способ сделать это?).
Я прочитал различные посты на SO, такие как: Добавление списка с другой длиной в качестве нового столбца вдатафреймы и конвертируют набор пандРисует И объекты данных в массив массивов , но не смогли найти элегантного решения проблемы, когда для создания желаемого кадра данных необходимо создать сотни объектов серии.