繁体   English   中英

计算有多少行满足变化条件

[英]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 ,您拥有XY都大于或等于自身的其他 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.

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