Pandas将计算的行添加到数据帧的底部

时间:2017-05-24 18:03:21

标签: python pandas

下面是我拥有的一个数据帧的小样本,我想在其底部添加一个计算行:

sch     q1     q2     q3
acc     Yes    Yes    No
acc     Yes    No     No
acc     Yes    No     No
acc     Yes    Yes    Yes

我想在底部添加一行,它会为每列提供“是”值的百分比,因此它看起来如下所示。

sch     q1     q2     q3
acc     Yes    Yes    No
acc     Yes    No     No
acc     Yes    No     No
acc     Yes    Yes    Yes
acc     1.00   0.5    0.25

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

假设以下方法:

In [11]: df.loc[len(df)] = ['acc'] + df.filter(regex='^q\d+') \
                                       .eq('Yes').mean().values.tolist()

In [12]: df
Out[12]:
   sch   q1   q2    q3
0  acc  Yes  Yes    No
1  acc  Yes   No    No
2  acc  Yes   No    No
3  acc  Yes  Yes   Yes
4  acc    1  0.5  0.25

答案 1 :(得分:2)

我看到你的lambda并提出一个纯粹的熊猫解决方案:

df.append(df.eq('Yes').mean(), ignore_index=True)

您没有指定sch列会发生什么,所以我忽略了它。在我当前的解决方案中,此列将获得值0

答案 2 :(得分:1)

    q1   q2    q3
0  Yes  Yes    No
1  Yes   No    No
2  Yes   No    No
3  Yes  Yes   Yes
4    1  0.5  0.25

输出:

.env

答案 3 :(得分:1)

让我们使用pd.concatmeanto_frame和T进行转置。

pd.concat([df,df.replace({'Yes':True,'No':False}).mean().to_frame().T.assign(sch='acc')])

输出:

    q1   q2    q3  sch
0  Yes  Yes    No  acc
1  Yes   No    No  acc
2  Yes   No    No  acc
3  Yes  Yes   Yes  acc
0    1  0.5  0.25  acc