#pandas #dataframe #numpy
#pandas #фрейм данных #numpy
Вопрос:
Моя цель — преобразовать массив в DataFrame, и ошибка произошла только в столбцах = …
housing_extra = pd.DataFrame(housing_extra_attribs,
index=housing_num.index,
columns=[housing.columns,'rooms_per_household', 'population_per_household', 'bedrooms_per_room'])
Следовательно, он возвращает
AssertionError: Number of manager items must equal union of block items
# manager items: 4, # tot_items: 12
В нем говорилось, что я только вводил 4 столбца, но housing.columns
сам по себе имеет 9 столбцов
здесь, когда я запускаю housing.columns
;
Index(['longitude', 'latitude', 'housing_median_age', 'total_rooms',
'total_bedrooms', 'population', 'households', 'median_income',
'ocean_proximity'],
dtype='object')
Итак, мой вопрос в том, как я могу объединить существующий столбец, который находится housing.columns
с 3 новыми столбцами; ['rooms_per_household', 'population_per_household', 'bedrooms_per_room']
вместе.
Ответ №1:
Вы можете использовать Index.union
для добавления списка столбцов к существующим столбцам фрейма данных:
columns= housing.columns.union(
['rooms_per_household', 'population_per_household', 'bedrooms_per_room'],
sort=False)
Или преобразовать в список, а затем добавить остальные столбцы в виде списка:
columns = (housing.columns.tolist()
['rooms_per_household', 'population_per_household', 'bedrooms_per_room'])
Затем:
housing_extra = pd.DataFrame(housing_extra_attribs,
index=housing_num.index,
columns=columns)
Какой-нибудь пример:
Предположим, что это df:
df = pd.util.testing.makeDataFrame()
print(df.columns)
#Index(['A', 'B', 'C', 'D'], dtype='object')
Когда вы передаете это в список:
[df.columns,'E','F','G']
вы получаете:
[Index(['userId', 'column_1', 'column_2', 'column_3'], dtype='object'),'E','F','G']
v / s при использовании объединения:
df.columns.union(['E','F','G'],sort=False)
Вы получаете:
Index(['A', 'B', 'C', 'D', 'E', 'F', 'G'], dtype='object')
Комментарии:
1. но есть ошибка неправильного синтаксиса: из tolist() в to_list()
2. @Wallika. спасибо за комментарий. tolist() также работает для меня в версии 0. 25.1. Я думаю, что это могло измениться с версией. Рад, что вы смогли это понять.