@san_m_m

Вопрос по объединению pandas и seriaes?

Добрый день!

Что-то не могу сообразить
Есть DataFrame

state = ['California', 'Texas', 'New York', 'Florida', 'Illinois']
area = [423967, 695662, 141297,  170312, 149995]
cl = ['tropic',  'tropic', 'norm', 'tropic', 'norm']
pop = [ 38332521, 26448193, 19651127, 19552860, 12882135]
data = pd.DataFrame({'state' : state, 'cl' : cl, 'area':area, 'pop':pop})


Дальше я провели группировку:

data_1 = data.groupby(['state', 'cl', 'area'])['pop'].median()


Как подписать получившиеся значения в предыдущем dataframe по значениям столбцов 'state', 'cl', 'area'?

Голову уже себе сломал...
Уже и data_1.keys() перебирал и собирал кортеж в DataFrame..., но чувствую, что задача решается намного легче
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dmshar
Похоже, вы сделали все, что-бы запутать тех, кто попытается вам помочь.
Начнем с название вопроса. Как можно объединить pandas и seriaes ?? Даже не говоря о неизвестном втором из этих терминов - предположим, вы имели ввиду Series - как можно ОБЪЕДЕНИТЬ модуль Pandas и объект типа Series ??
Идем далее.
Берем ваш датафрейм.

state           cl    area       pop
0   California     tropic  423967  38332521
1    Texas          tropic   695662  26448193
2    New York       norm  141297  19651127
3     Florida      tropic  170312  19552860
4    Illinois       norm  149995  12882135


Если бы вы группировали хотя-бы по cl - я бы хоть что-то понял. Получили бы две группы - тропических и умеренных штатов, потом искали бы медиану населения для каждой из этих групп.
А что значить группировка, включающая не только название штата, но еще и и площадь и наделение?? Сколько элементов в каждой группе вы предлагаете получить???

Идем дальше.
Как подписать получившиеся значения в предыдущем dataframe по значениям столбцов
Что значит "подписать ЗНАЧЕНИЯ"??? А "по значениям (??) столбцов? У столбца может быть множество значений. Что и как вы подписывать-то собрались?
(Кстати, надеюсь, вы понимаете, что data_1 у вас это НЕ DataFrame? )
Если бы вы сделали группировку, про которую я написал выше
data_1 = data.groupby(['cl'])['pop'].median()
то в результате бы действительно, получили бы объект типа Series
cl
norm      16266631
tropic    26448193

Что тут вы собрались подписывать???

Идем далее:
data_1.keys() перебирал и собирал кортеж в DataFrame
Что вы перебирали?
Понятно, что data_1.keys() вернет мультииндекс вашего нового датафрейма.
MultiIndex([('California', 'tropic', 423967),
            (   'Florida', 'tropic', 170312),
            (  'Illinois',   'norm', 149995),
            (  'New York',   'norm', 141297),
            (     'Texas', 'tropic', 695662)],
           names=['state', 'cl', 'area'])

А надо-то вам что?? И какой кортеж вы преобразовали в DataFrame? И главное - зачем? К элементу мультииндекса можно обратиться по индексу списка.

Ну, и главный вопрос (очевидно, так как именно он написан в заголовке темы) - что с чем вы объединяете? Он так и остался загадкой.

В общем, если вам действительно нужен ответ - попробуйте сформулировать вопрос так, что-бы усилий на поиск его решения требовалось приложить меньше, чем усилий на решения тех загадок, которые вы понапихали в свой вопрос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы