[英]How to create a column with a count of rows between two values of another column in 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.