вызов нескольких имен столбцов в DataFrame для создания новой ошибки keyframe - PullRequest
0 голосов
/ 11 марта 2019

После горячего кодирования 2 различных функций, а затем объединения результирующих столбцов с горячим кодированием с исходным кадром данных в Pandas у меня есть 3 кадра данных.

Первый - это OneHotZips (который содержит мою функцию # 1). Вторым является OneHotYearBuilt (то же самое, то есть моя функция # 2 в виде одного горячо закодированного столбца в кадре данных). Наконец, у меня есть подмножество, которое является двумя предыдущими, соединенными с исходным кадром данных. Конкретнее, subset.keys () - это:

Index(['lat_z', 'lon_z', 'price_z', 'lot_z', 'LotSizeSquareFeet',
       'TotalBedrooms', 'NormalizedBathCount', 'PropertyAddressLatitude',
       'PropertyAddressLongitude', 'MonthsToSale',
       ...
       'year_built_2008.0', 'year_built_2009.0', 'year_built_2010.0',
       'year_built_2011.0', 'year_built_2012.0', 'year_built_2013.0',
       'year_built_2014.0', 'year_built_2015.0', 'year_built_2016.0',
       'year_built_2017.0'],
      dtype='object', length=477) 

Я хотел бы использовать только некоторые из этих столбцов в новом фрейме данных с именем downsampled_z.

Мне удалось получить строку строк? с

'"' + '", "'.join(list(OneHotZips.columns.values)) + '"'

Похоже:

'"year_built_1882.0", "year_built_1900.0", ... "year_built_2017.0"'

Кажется, что я так хочу, но следующее не работает:

downsampled_z = subset[["lat_z", "lon_z", "price_z", "lot_z", "TotalBedrooms", "NormalizedBathCount", "built_prct", 
 '"' + '", "'.join(list(OneHotZips.columns.values)) + '"',
 '"' + '", "'.join(list(OneHotYearBuilt.columns.values)) + '"']]

Это приводит к ошибке

'[\'"year_built_1882.0", "year_built_1900.0", ... "year_built_2017.0"\'] not in index

Другие подходы, которые я использовал, такие как

[str(x) for x in list(OneHotZips.columns.values)]

результат в

ValueError: setting an array element with a sequence

1 Ответ

1 голос
/ 11 марта 2019

Это потому, что вы действительно создаете одну длинную строку, которая не является именем вашего столбца.Вы можете просто использовать:

downsampled_cols = ["lat_z", "lon_z", "price_z", "lot_z", "TotalBedrooms", "NormalizedBathCount", "built_prct"] +\
list(OneHotZips.columns.values) +\
list(OneHotYearBuilt.columns.values) +\
...

А затем,

downsampled_z = subset[downsampled_cols]

Если вы присоединитесь к списку строк, вы получите одну строку.


Я думаю, что ваша путаница в основном из-за чего-то другого.В Python оператор print не показывает тип переменной.То есть, если вы print('abc'), вы получите abc (без кавычек), а print(123) даст вам 123 (также без кавычек).Если вместо этого вы используете repr, вы увидите кавычки или их отсутствие.Но это может сбить с толку таким образом.Я хочу сказать, что Duck Typing .Не беспокойтесь о явном отображении кавычек в вашем выводе.Если в значении вашей переменной есть буква, тогда тип переменной - string.Конечно, вы можете хранить числа в виде строк, что может привести к путанице.

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