Вам нужно переставить все строковые значения в столбцы и заполнить их 0 или 1, звучит как непростая задача, но, как упоминал Дж. Андерсон, упомянутые выше, есть библиотеки, чтобы сделать это очень просто.
Я бы создал обобщенную функцию, используя get_dummies, что-то вроде этого:
def dummy_df(df, todummy_list):
for x in todummy_list:
dummies = pd.get_dummies(df[x], prefix=x, dummy_na=False)
df = df.drop(x, 1)
df = pd.concat([df, dummies], axis=1)
return df
И вызвал функцию со всеми функциями, которые должны быть подставлены
todummy_list = ['MODEL_NAME', 'TRANS_TYPE', 'FUEL_TYPE']
train = dummy_df(train, todummy_list)
[112 ] с учетом того, что «поезд» представляет собой информационный блок панд. Поймите, что большинство шрифтов пропорционально, что означает, что каждый символ может взять различную ширину. WWW и lll являются оба 3 символами, но они потребуют весьма различных размеров текстового поля. Некоторые шрифты, такие как Курьер, разработаны, чтобы быть зафиксированной шириной и не будут иметь этой проблемы. К сожалению, Вы не можете иметь никакого контроля, по которому шрифт выбран в текстовом поле.
Если Вы все еще хотите попробовать это, ключ должен получить ширину символа в пикселях, умножить ее на количество символов, затем добавить некоторое дополнение для границ вокруг символов. Можно найти, что это хорошая начальная точка:
http://docs.wxwidgets.org/stable/wx_wxdc.html#wxdcgetpartialtextextents
или, поскольку litb предлагает:
http://docs.wxwidgets.org/2.4/wx_wxwindow.html#wxwindowgettextextent
Кажется, нет пути. Можно, однако, использовать wxWindow::GetTextExtent
. Это - код C++, но может быть легко адаптировано к wxPython:
int x, y;
textCtrl->GetTextExtent(wxT("T"), &x, &y);
textCtrl->SetMinSize(wxSize(x * N + 10, -1));
textCtrl->SetMaxSize(wxSize(x * N + 10, -1));
/* re-layout the children*/
this->Layout();
/* alternative to Layout, will resize the parent to fit around the new
* size of the text control. */
this->GetSizer()->SetSizeHints(this);
this->Fit();
Это, Вы берете размер разумного символа width (шрифты могут иметь символы переменной ширины), и умножьте его правильно, добавляя некоторое маленькое значение для составления собственного компонента, дополняющего (скажите, 10 пкс).