是否有一种有效的方法来计算水果行为真的每个水果的汇总统计量?
df comment type score apple banana pear
0 dfsd new 0.4 True False True
1 sdfs low 0.3 False True False
2 sdddfs low 0.2 False True False
3 sdsfs low 0.8 True True False
4 ddds low 0.1 True True True
... 我试过:
fruits = ['apple','banana','pear']
for fruit in fruits:
df1 = df.loc[df.f'{fruit}', :]
df1.describe()预期产出:
fruit
count mean_score std_score
apple
banana
pear 发布于 2020-09-12 11:05:40
选择所需的fruits列,然后为每个水果列获取相应的score,并屏蔽False值,最后使用describe获取描述性统计信息:
s = ['count', 'mean', 'std']
stats = df[fruits].apply(lambda m: df['score'].mask(~m)).describe().T[s]print(stats)
count mean std
apple 3.0 0.433333 0.351188
banana 4.0 0.350000 0.310913
pear 2.0 0.250000 0.212132发布于 2020-09-12 10:56:46
要做到这一点,一种不依赖df.describe的一般方法是:
df2 = df.groupby(['apple','banana','pear']).agg({'type':['count','mean','std']})会给你每种水果的数量、平均值和性病。
作为对评论的回应,您可以通过以下方式重做索引,以获得每一行的水果:
df2.index = [df2.index.names[i] for j in range(len(df2.index.names)) for i,x in enumerate(df2.index[j]) if x ]https://stackoverflow.com/questions/63859501
复制相似问题