[英]Filter Pandas DataFrame using a while loop
我正在嘗試使用帶有過濾器值的列表訪問數據框的過濾版本。
我正在使用一個while循環,我認為該循環將適當的列表值一個接一個地插入到數據幀過濾器中。 此代碼將打印第一個數據,但隨后將打印4個空數據幀。
我確定這是一個快速修復,但是我找不到它。
boatID = [342, 343, 344, 345, 346]
i = 0
while i < len(boatID):
df = df[(df['boat_id']==boatID[i])]
#run some code, i'm printing DF.head to test it works
print(df.head())
i = i + 1
示例數據框:
boat_id activity speed heading
0 342 1 3.34 270.00
1 343 1 0.02 0.00
2 344 1 0.01 270.00
3 345 1 8.41 293.36
4 346 1 0.03 90.00
我覺得您覆蓋df
的df
的df = df[(df['boat_id']==boatID[i])]
:
也許您需要將輸出更改為新的數據框,例如df1
:
boatID = [342, 343, 344, 345, 346]
i = 0
while i < len(boatID):
df1 = df[(df['boat_id']==boatID[i])]
#run some code, i'm printing DF.head to test it works
print(df1.head())
i = i + 1
# boat_id activity speed heading
#0 342 1 3.34 270
# boat_id activity speed heading
#1 343 1 0.02 0
# boat_id activity speed heading
#2 344 1 0.01 270
# boat_id activity speed heading
#3 345 1 8.41 293.36
# boat_id activity speed heading
#4 346 1 0.03 90
如果您需要過濾數據幀df
與列boat_id
通過列表boatID
使用isin
:
df1 = df[(df['boat_id'].isin(boatID))]
print df1
# boat_id activity speed heading
#0 342 1 3.34 270.00
#1 343 1 0.02 0.00
#2 344 1 0.01 270.00
#3 345 1 8.41 293.36
#4 346 1 0.03 90.00
編輯:
我認為您可以使用dataframes
字典 :
print df
boat_id activity speed heading
0 342 1 3.34 270.00
1 343 1 0.02 0.00
2 344 1 0.01 270.00
3 345 1 8.41 293.36
4 346 1 0.03 90.00
boatID = [342, 343, 344, 345, 346]
dfs = ['df' + str(x) for x in boatID]
dicdf = dict()
print dfs
['df342', 'df343', 'df344', 'df345', 'df346']
i = 0
while i < len(boatID):
print dfs[i]
dicdf[dfs[i]] = df[(df['boat_id']==boatID[i])]
#run some code, i'm printing DF.head to test it works
# print(df1.head())
i = i + 1
print dicdf
{'df344': boat_id activity speed heading
2 344 1 0.01 270, 'df345': boat_id activity speed heading
3 345 1 8.41 293.36, 'df346': boat_id activity speed heading
4 346 1 0.03 90, 'df342': boat_id activity speed heading
0 342 1 3.34 270, 'df343': boat_id activity speed heading
1 343 1 0.02 0}
print dicdf['df342']
boat_id activity speed heading
0 342 1 3.34 270
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.