2017-07-12 66 views
1

我有一个数据框有几列。其中一列中的值为总和为1的百分比,例如列A.我想在另一列(列B)中打印这些值,以使这些值与列A中的最大值(总和为0.95)相对应。使用熊猫进行数据框架统计分析

例如:

Column A  Column B 
    A1    0.2 
    A2    0.5 
    A3    0.25 
    A4    0.01 
    A5    0.03 
    A6    0.01 

结果应该是

A1 
    A2 
    A3 

在列B总结这些值的相应值,以0.95

+1

欢迎SO。您可以发布您尝试的内容,因为这看起来像是代码请求,所以不会像这样操作 – EdChum

回答

2

让我们用cumsum使用.loc布尔索引:

df.loc[df['Column B'].cumsum() <= .95,'Column A'] 

编辑:hausdork指出,如果我们想用最大的值,那么我们可以sort_values做到这一点:

df.loc[df.sort_values(by='Column B', ascending=False)['Column B'].cumsum() <= .95,'Column A'] 

输出:

0 A1 
1 A2 
2 A3 
Name: Column A, dtype: object 
+0

我们不需要先按列B对数据框进行排序吗?由于OP要求列A的最大值小于0.95。 – hausdork

+0

非常感谢。这非常有用。还有一点需要注意的是,有没有办法来阻止行号,名称和dtype的列表。我试图将其复制到一个数组并使用list()命令。这工作,但有没有更好的方法? –