df.columns.tolist () для возврата строк, а не кортежей - PullRequest
0 голосов
/ 15 мая 2018

в пандах, чтобы найти столбцы df, которые вы делаете:

df.columns который возвращает многоиндексный массив.

Если вы хотите добавить его в переменную, вы делаете:

columns=df.columns.tolist()

, который создаст кортеж для каждого имени столбца

например columns=[('A'),('B'),...]

существует ли способ создать переменную columns, в которой каждый столбец является строковым элементом списка, а не элементом кортежа списка, или вам просто нужно впоследствии отредактировать список?

1 Ответ

0 голосов
/ 15 мая 2018

Если у вас есть мультииндекс, не всегда ясно, что tolist() выдаст список из одной строки, так как возможно, что есть, ну, несколько индексов.

Однако, как предлагает @jezreal в комментариях, вы можете выбрать первый уровень следующим образом:

df.columns.get_level_values(0).tolist()

Это может иметь дубликаты, поскольку получает первый уровень для каждого столбца. Если вместо этого вы хотите выбрать возможные значения для уровня 0 («уникальные» значения), вы можете использовать

df_multiindex.columns.levels[0].tolist()

Пример:

import pandas as pd
from io import StringIO

# Create Example Data
df_multiindex = pd.read_csv(StringIO(
'''Fruit,Color,Count,Price
Apple,Red,3,$1.29
Apple,Green,9,$0.99
Pear,Red,25,$2.59
Pear,Green,26,$2.79
Lime,Green,99,$0.39''')).set_index(['Fruit', 'Color']).T

# Print result
print('get_level_values(0): {}'.format(df_multiindex.columns.get_level_values(0).tolist()))
print('levels[0]:           {}'.format(df_multiindex.columns.levels[0].tolist()))

Выход:

get_level_values(0): ['Apple', 'Apple', 'Pear', 'Pear', 'Lime']
levels[0]:           ['Apple', 'Lime', 'Pear']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...