[英]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.