Python Numpy Array Добавить с пустыми столбцами - PullRequest
1 голос
/ 30 сентября 2019

У меня есть 2 пустых массива, я использую верхнюю строку в качестве заголовков столбцов. Каждый массив имеет одинаковые столбцы, за исключением 2 столбцов. У arr2 будет другой столбец C, а также дополнительный столбец

Как объединить все эти столбцы в один массив np?

arr1 = [ ['A', 'B', 'C1'], [1, 1, 0], [0, 1, 1] ]
arr2 = [ ['A', 'B', 'C2', 'C3'], [0, 1, 0, 1], [0, 0, 1, 0] ]
a1 = np.array(arr1)
a2 = np.array(arr2)

b = np.append(a1, a2, axis=0)
print(b)

# Desired Result
# A B C1 C2 C3
# 1 1  0  -  -
# 0 1  1  -  -
# 0 1  -  0  1
# 0 0  -  1  0

1 Ответ

2 голосов
/ 30 сентября 2019

Массивы NumPy не подходят для обработки данных с именованными столбцами, которые могут содержать разные типы. Вместо этого я бы использовал pandas для этого. Например:

import pandas as pd

arr1 = [[1, 1, 0], [0, 1, 1] ]
arr2 = [[0, 1, 0, 1], [0, 0, 1, 0] ]

df1 = pd.DataFrame(arr1, columns=['A', 'B', 'C1'])
df2 = pd.DataFrame(arr2, columns=['A', 'B', 'C2', 'C3'])

df = pd.concat([df1, df2], sort=False)

df.to_csv('mydata.csv', index=False)

В результате получается «dataframe», структура данных, похожая на электронную таблицу. Ноутбуки Jupyter отображают их следующим образом:

example of dataframe rendered in HTML

Вы можете заметить, что есть дополнительный новый столбец;это «индекс», который можно рассматривать как метки строк. Вам это не нужно, если вы не хотите, чтобы оно было в вашем CSV, но если вы продолжаете делать что-то в кадре данных, вы можете выполнить df = df.reset_index(), чтобы перемаркировать строки более полезным способом.

Если вы хотите вернуть фрейм данных в виде массива NumPy, вы можете сделать df.values и все - и все. Хотя у него нет имен столбцов.

Последнее: если вы действительно хотите остаться в NumPy-land, тогда посмотрите структурированные массивы , которые даютВы по-другому именуете столбцы, по сути, в массиве. Честно говоря, с тех пор как pandas появился, я почти никогда не вижу их в дикой природе.

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