[英]Counting how many rows meet the changing condition
我正在尝试计算满足给定条件的行数,但我希望在每次重新计算后更改此条件。 我有示例数据:
data={'ID':['1','2','3','4'],'X':[23,22,21,24],'Y':[44,45,41,46],'X_MIN':[22,21,20,23],'Y_MIN':[43,44,40,45]}
ID | X | 是 | X_MIN | Y_MIN |
---|---|---|---|---|
1个 | 23 | 44 | 22 | 43 |
2个 | 22 | 45 | 21 | 44 |
3个 | 21 | 41 | 20 | 40 |
4个 | 24 | 46 | 23 | 45 |
这是商店的 ID 及其坐标。 我想检查一个商店下面有多少家商店。 所以我必须将每个商店的最小 X 和 Y 分配给整个数据库,并检查 X>=X_MIN 和 Y>=Y_MIN 的位置。 我试图创建一个循环来创建一个新的数据框,并将所有 X_MIN 和 Y_MIN 替换为数据第一行中的常量值。 然后我想筛选符合条件的case有多少个,统计一下加到list中。 并以这种方式通过遍历行来重复操作。 我所做的如下:
test=df
calc=[]
for i, row in df.iterrows():
test['X_MIN']=row['X_MIN']
test['Y_MIN']=row['Y_MIN']
count=test[['X','Y','X_MIN','Y_MIN']].query('X>=X_MIN and Y>=Y_MIN')
a=count['X'].count()
calc.append(a)
我想来个例子表:
final={'ID':['1','2','3','4'],'count':[3,3,4,1]}
ID | 数数 |
---|---|
1个 | 3个 |
2个 | 3个 |
3个 | 4个 |
4个 | 1个 |
但是,命令无休止地计数。 我正在寻求解决此问题的帮助。
也许这段代码就是您要找的。 它生成一个列count
,其中对于每个ID
,您拥有X
和Y
都大于或等于自身的其他 ID 的数量
import pandas as pd
data= pd.DataFrame({'ID':['1','2','3','4'],'X':[23,22,21,24],'Y':[44,45,41,46]})
data['count'] = data.apply(lambda x: len(data[(data['X'] >= x['X'])&(data['Y'] >= x['Y'])]),axis=1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.