簡體   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