我試圖計算有多少行滿足給定條件,但我希望在每次重新計算后改變這個條件。我有樣本資料:
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 替換為我資料第一行中的常量值。然后我想過濾有多少案例符合條件,計算它們并將它們添加到串列中。并以這種方式通過迭代行來重復操作。我所做的如下:
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 |
但是,該命令無休止地計數。我正在尋求幫助來解決這個問題。
uj5u.com熱心網友回復:
也許這段代碼就是你要找的。它會生成一個列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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/511138.html
標籤:Python熊猫循环if 语句数数
