我想groupby一个特定的列,然后应用一个函数到多个其他列。我希望函数分别遍历每列(Q1,Q2,Q3,Q4,Q5,Q6),并且(a):在每一列中只删除NaN单元格,(B)找出每一列中4的总数,然后(c)将每一列中4的总数除以该列中值的总数。
我尝试了以下方法(如下),但不起作用。由于某种原因,它无法识别我试图在每列中找到4的数量。我还希望能够对多个列执行此操作,而不仅仅是一个。
df.groupby('Team_Name').apply(lambda x: x['Q1'][4]/x['Q1'].sum()).values
print(df)
1条答案
按热度按时间qni6mghb1#
您可以通过
DataFrame.filter
比较过滤列,通过4
比较并获得每组mean
:如果需要,如果计算列中的值的总数,则忽略
NaN
s计算4
的数量乘以聚合sum
,然后除以没有NaN
s的值的数量:使用lambda函数的Slowier解决方案:
为了完整性,你的解决方案应该由lambda函数来改变,但是它很慢,所以不推荐: