如何对包含特定字符串的列中的所有值进行求和?

3

我有一个每个社区场所类别的数据框,长这样:

enter image description here

每一行中的值表示特定社区场所的数量。

我想找出每个社区各餐厅的总数。为了达到这个目的,我知道必须对包含 "Restaurant" 字符串的列进行求和。

我尝试使用 str.contains 函数,但它会将 True 的情况加起来,即计算包含 "restaurant" 字符串的列在该行中具有值 > 0 的次数。然而,我希望将每个社区的所有餐馆总数相加。

3个回答

5

您可以在此处使用df.locpd.Index.str.contains一起使用。

df['sum_rest'] = df.loc[:,df.columns.str.contains('Restaurant')].sum(axis=1)

1
这是一种实现的方式:
df = pd.DataFrame({"restaurant_a": [1,2,3], "shop": [2,3,4], "restaurant_b": [4,5,6]})
df["sum_rest"] = df[[x for x in df.columns if "restaurant" in x]].sum(axis = "columns")
df

结果是:

   restaurant_a  shop  restaurant_b  sum_rest
0             1     2             4         5
1             2     3             5         7
2             3     4             6         9

0

定义一个包含“餐厅”的列列表:

lr = ["Afgan Restaurant", "American Restaurant", "Argentinian Restaurant"]

然后解析结果并将其放入一列中:

df["sum_restaurant"] = df.loc[:, columns=lr].apply(lambda row : np.sum(row.to_numpy()))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接