Используйте PdfPages
, чтобы решить вашу проблему. Передайте свой объект figure
методу savefig
.
Например, если у вас есть целая куча объектов figure
и вы хотите сохранить их в многостраничном PDF-файле, вы можете do:
import matplotlib.backends.backend_pdf
pdf = matplotlib.backends.backend_pdf.PdfPages("output.pdf")
for fig in xrange(1, figure().number): ## will open an empty extra figure :(
pdf.savefig( fig )
pdf.close()
Сначала измените тип столбца:
df.cc = pd.Categorical(df.cc)
Теперь данные выглядят одинаково, но сохраняются категорически. Чтобы захватить коды категорий:
df['code'] = df.cc.cat.codes
Теперь у вас есть:
cc temp code
0 US 37.0 2
1 CA 12.0 1
2 US 35.0 2
3 AU 20.0 0
Если вы не хотите изменять свой DataFrame, но просто получите коды:
df.cc.astype('category').cat.codes
Или используйте категориальный столбец как индекс:
df2 = pd.DataFrame(df.temp)
df2.index = pd.CategoricalIndex(df.cc)
Если вы хотите преобразовать свою серию в целые идентификаторы, вы можете использовать pd.factorize
.
Обратите внимание, что это решение, в отличие от pd.Categorical
, не будет сортироваться в алфавитном порядке. Таким образом, первая страна будет назначена 0
. Если вы хотите начать с 1
, вы можете добавить константу:
df['code'] = pd.factorize(df['cc'])[0] + 1
print(df)
cc temp code
0 US 37.0 1
1 CA 12.0 2
2 US 35.0 1
3 AU 20.0 3
Если вы хотите сортировать в алфавитном порядке, укажите sort=True
:
df['code'] = pd.factorize(df['cc'], sort=True)[0] + 1