【发布时间】:2013-05-09 18:31:14
【问题描述】:
我有一个 DataFrame data 布局如下:
Observation A_1 A_2 A_3 B_1 B_2 B_3
Obs1 yes no yes no no no
Obs2 no no no yes yes yes
Obs3 yes yes yes yes yes yes
目标:计算所有标记为“是”的观察结果的频率:
- 仅在“A”样本中
- 仅在“B”样本中
- 在两组中
编辑:这意味着对于前两个计数,我需要排除 A 组和 B 组包含“是”的观察结果(见第三行)。
我考虑过使用groupby:
grouper = data.groupby(lambda x: x.split("_")[0], axis=1)
grouped = grouper.agg(lambda x: sum(x == "yes"))
但是我的计数除以行,这不是我想要的。
这里最好的行动是什么?
编辑:根据要求,有关输出的更多信息。我想要类似的东西
Frequency of valid [meaning "yes"] observations in group A: X
Frequency of valid observations in group "B": Y
Frequency for all valid observations: Z
其中 X、Y 和 Z 是返回的计数。
我不关心个人观察的这个特定输出。我对所有这些值都感兴趣。
【问题讨论】:
-
你能包括你想要的输出吗?我不完全确定您的预期结果是什么。