Есть ли быстрый способ добавить столбец, содержащий числа, которые однозначно индексируют столбец? [Дубликат]

Используйте 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()

26
задан jpp 12 July 2018 в 18:12
поделиться

2 ответа

Сначала измените тип столбца:

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)
53
ответ дан John Zwinck 15 August 2018 в 15:42
поделиться

Если вы хотите преобразовать свою серию в целые идентификаторы, вы можете использовать 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 
3
ответ дан jpp 15 August 2018 в 15:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: