Сумма значений столбцов, имена которых относятся к аналогичной категории - PullRequest
0 голосов
/ 02 апреля 2019

Новое в Python - у меня есть pandas dataframe со 100 строками и 275 столбцами, содержащими окрестности в качестве индекса и места встречи в виде столбцов.Многие места в колонках похожи и могут быть сгруппированы в более широкую категорию.Значения таблицы представляют собой частоты мест для каждого района.Я пытаюсь создать новый фрейм данных с суммами частот старых столбцов, группируя их по категориям.

т.е.

df = pd.DataFrame({'Area': ['Area1', 'Area2', 'Area3'], 
                   'Pizza Place': [0.01, 0.02, 0.02],'Sandwich shop': [0.01, 0.02, 0.02],'Burger Joint': [0.01, 0.02, 0.02],'Area': ['Area1', 'Area2', 'Area3'], 
                   'Park': [0.01, 0.02, 0.02],'Elementary School': [0.01, 0.02, 0.02],'Playground': [0.01, 0.02, 0.02]})

Я хочу создать 2 столбца, которые будут выполнять что-то вроде этого:

df['total_fast_food']=sum of frequencies for columns that contain the words:'Pizza','Sandwich','Burger' in their name
df['total_kids]=sum of frequencies for columns that contain the words:'Park','School','Play' in their name

что я пробовал до сих пор:

df.loc[df['Venue Category'].str.contains('Fast Food|Pizza Place|Burger Joint', case=False)] = 'FastFood'
df_new=df_old.filter(like='Fast',axis=1)
df_new['FastFood'] = df_new.sum(axis=1)

с помощью df.loc Я могу создать новые столбцы в существующем df и удалить те, которые используются в качестве параметров, нов кадре данных все значения новых столбцов теперь равны 0.

с фильтром (например, =) я получаю суммы для всех столбцов, в имени которых указано «Быстрый», что хорошо, но, очевидно, я не могу использоватьэто для других параметров, например, «Джойнт, пицца и т. д.»

Есть мысли, пожалуйста?

1 Ответ

0 голосов
/ 02 апреля 2019

В отсутствие MCVE, который включал бы входные данные, может быть получен приблизительный ответ.Хотя неясно, на какой оси находятся значения, на которые должны быть рассчитаны значения.

Кроме того, категория отмечена, поэтому категориальные значения учитываются.

import pandas as pd

venue = ["Fast Food", "Pizza Place", "Burger Joint", "Fast Food", "Pizza Place", "Burger Joint", "Burger Joint", "Fast Food", "Fast Food"]
df = pd.DataFrame({"Venue":venue})
df["Venue Category"] = pd.Categorical(df['Venue'])
print(df["Venue Category"].value_counts())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...