名称属于类似类别的列的值求和



Python 中的新功能 - 我有一个 pandas 数据帧,有 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。

使用 filter(like=(,我得到了名称中包含"快速"的所有列的总和,这很好,但显然我不能将其用于其他参数,即"联合、比萨饼等">

有什么想法吗?

在没有包含输入数据的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())

最新更新