Я пытаюсь сделать простейший возможный инструмент отображения объектов с помощью python3. Две цели: получить лучшие характеристики и понять, как программировать питон :)Самый простой способ отображения объектов в python
Вот мой код, он не работает:
import pandas as pd
source = pd.DataFrame({'Country' : ['USA', 'USA', 'Russia','USA'],
'City' : ['New-York1', 'New-York', 'Sankt-Petersburg', 'New-York']})
#trim column value selecting first two symbols
def s_trim(x):
return x[:2]
#make new column from two selecting first two symbols from each
def s_trim_concat(x,y):
return '%s-%s' % (x[:2],y[:2])
features = [
('trim',['Country'],s_trim),
('trim1',['Country','City'],s_trim_concat),
('trim2',['City','Country'],s_trim_concat)
]
for feature_name, columns, func in features:
source[feature_name] = source[columns].apply(func, axis=1)
print(source)
UPDATE: Теперь код работает, но у меня пришлось усложнить функции, поэтому я до сих пор ищу хорошие решения, что позволяет использовать простые функции без преобразования типов внутри:
import pandas as pd
source = pd.DataFrame({'Country' : ['USA', 'USA', 'Russia','USA'],
'City' : ['New-York1', 'New-York', 'Sankt-Petersburg', 'New-York']})
#trim column value selecting first two symbols
def s_trim(x):
return x.str[:2]
#make new column from two selecting first two symbols from each
def s_trim_concat(row):
x = row[0]
y = row[1]
return '%s-%s' % (x[:2],y[:2])
features = [
('trim',['Country'],s_trim),
('trim1',['Country','City'],s_trim_concat),
('trim2',['City','Country'],s_trim_concat)
]
for feature_name, columns, func in features:
if len(columns) == 1:
source[feature_name] = source[columns].apply(func)
else:
source[feature_name] = source[columns].apply(func, axis=1)
print(source)
Что это должен делать? – user2357112
Перед решением задач классификации или регрессии я хочу добавить новые преобразованные столбцы, то есть очистить исходные данные или нормализовать их. –
В моем примере кода я ожидаю, что s_trim для столбца cat для двух символов и s_trim_concat - чтобы сделать один столбец из двух. То есть для «США», «Нью-Йорк», чтобы получить «US-Ne» –