繁体   English   中英

Pandas:计算一列中两个值之间的行数

[英]Pandas: count how many rows between two values in a column

假设我有以下 dataframe

import pandas as pd
df = pd.DataFrame({
'Est': [1.18,1.83,2.08,2.30,2.45,3.21,3.26,3.54,3.87,4.58,4.59,4.98],
'Buy': [0,1,1,1,0,1,1,0,1,0,0,1]
})


    Est     Buy
0   1.18    0
1   1.83    1
2   2.08    1
3   2.30    1
4   2.45    0
5   3.21    1
6   3.26    1
7   3.54    0
8   3.87    1
9   4.58    0
10  4.59    0
11  4.98    1

我想创建一个新的 dataframe 具有以下格式的两列和 4 行:第一行包含多少 'Est' 值介于 1 和 2 之间,以及在列 'Buy' 中有多少个 1; 第二行与 2 到 3 之间的“Est”值相同; 第三行在 3 和 4 之间,以此类推。 所以我的 output 应该是

    A   B
0   2   1
1   3   2
2   4   3
3   3   1

我尝试使用 pandas(或 np.where)中的where子句来创建具有df['Est'] >= 1 & df['Est'] <= 2等限制的新列,然后计算。 但是,有没有更简单、更清洁的方法来做到这一点? 谢谢

听起来您想按第一列的楼层进行分组:

g = df.groupby(df['Est'] // 1)

您计算Est列:

count = g['Est'].count()

并对Buy列求和:

buys = g['Buy'].sum()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM