#python #pandas #dataframe
#питон #pandas #фрейм данных
Вопрос:
У меня есть многоиндексный фрейм данных с 200 столбцами. Я хотел бы выбрать из этого конкретный столбец. Предположим, что df — это какая-то часть моего фрейма данных:
df=
a b
l h l h l h l
cold hot hot cold cold hot hot
2009-01-01 01:00:00 0.1 0.9 0.4 0.29 0.15 0.6 0.3
2009-01-01 02:00:00 0.1 0.8 0.35 0.2 0.15 0.6 0.4
2009-01-01 03:00:00 0.12 0.7 0.3 0.23 0.23 0.8 0.3
2009-01-01 04:00:00 0.1 0.9 0.33 0.24 0.15 0.6 0.4
2009-01-01 05:00:00 0.17 0.9 0.41 0.23 0.18 0.75 0.4
Я хотел бы выбрать значения для этого столбца[h, hot].
Мой вывод должен быть:
df['h','hot']=
a b
2009-01-01 01:00:00 0.9 0.6
2009-01-01 02:00:00 0.8 0.6
2009-01-01 03:00:00 0.7 0.8
2009-01-01 04:00:00 0.9 0.6
2009-01-01 05:00:00 0.9 0.75
Я был бы признателен за любые указания о том, как я мог бы это выбрать.
Комментарии:
1. Я думаю, что
df['b','h','hot']
это должно работать здесь только для иерархических столбцов2. Пожалуйста, опубликуйте
list(df.columns)
. Это поможет нам увидеть, есть ли неправильные пробелы…3.
df['b','h','hot']
работает для меня, если это не так, тогда опубликуйтеdf.info()
иprint(df.columns.tolist()
посмотрите, каковы реальные имена столбцов4. Спасибо вам за ваши ответы. Но я забыл один второстепенный момент в своем вопросе. Я немного изменил свой пост. Я очень ценю это, если вы поможете мне с измененной версией моего вопроса. Спасибо.
Ответ №1:
Для нарезки по нескольким индексам по вашему желанию столбцы необходимо сначала отсортировать sort_index(axis=1)
, затем вы можете выбрать интересующие вас столбцы без ошибок:
In [12]:
df = df.sort_index(axis=1)
df['a','h','hot']
Out[12]:
0
2009-01-01 01:00:00 0.9
2009-01-01 02:00:00 0.8
2009-01-01 03:00:00 0.7
2009-01-01 04:00:00 0.9
2009-01-01 05:00:00 0.9
Name: (a, h, hot), dtype: float64
Комментарии:
1. Большое вам спасибо. Да, это именно то, что я искал. Я пробовал эти команды без «сортировки», и, как вы сказали, я получил эту ошибку. Не могли бы вы подсказать мне, что именно делает эта команда «сортировать»? Спасибо.
2.
sort_values
в этом случае просто сортирует столбцы, это методIndex
,Series
,DataFrame
и т. Д3. Спасибо. Но «sort_values» приводит к сортировке имен столбцов без перемещения их значений (неправильная метка). Это означает, что когда я ищу значения df[‘a’,’h’,’hot’], я получу другие значения, например df[‘a’,’l’,’cold’]. Я очень ценю это, если вы поможете мне решить эту проблему.
4.
df = df.sort_index(axis=1)
работает ли до выбора столбца?
Ответ №2:
Попробуй это:
dataframe= pd.DataFrame()
dataframe["temp"] = df["b"]["h"]["hot"]
df — это ваш фрейм данных