根据熊猫另一列中的值,按计数总和分组

时间:2020-02-25 20:09:43

标签: pandas

我的桌子看起来

origin   Ad_Block1.    Ad_Block2
YT.      Yes.          Yes
YT.      Yes.          Yes
YT.      Yes
FB.      Yes
FB.      Yes
FB.      Yes
FB.      Yes

我有一个变量,用于存储“是”的计数之和

例如, yes_count = 9

我的预期输出是

Origin   Ad_Block_Count 
YT.      5
FB.      4

我该如何实现

2 个答案:

答案 0 :(得分:0)

以下方法不是专门计算Yes和/或Yes.的值,而是简单地计算所有origin列中每个Ad_Block的非空条目的数量。如果用缺失值表示“否”,那应该没问题。

假设您的DataFrame命名为df

# Replace empty strings with np.nan
df = df.replace('', np.nan)

# "Melt" the DataFrame such that each value in each column
# is moved into its own row.
df.melt(id_vars='origin').groupby('origin')['value'].count()

origin
FB.    4
YT.    5
Name: value, dtype: int64

答案 1 :(得分:0)

您可以堆叠数据框,检查数据是否以array([[0.759178 , 0.40589622, 2.0082092 ]], dtype=float32) Yes开头:

groupby().sum()

输出:

(df.set_index('origin')
   .stack().str.startswith('Yes')
   .groupby(level=0).sum()
)