使用Python中的熊貓數據幀:條件在循環
我想從一個數據幀以下數據和無法修復我的循環,以獲得正確的結果。
數據集的小樣本:
BERTH FROM_BERTH BI
29 H2 0
29 09 0
29 J5 0
C5 NaN 1
J4 NaN 1
J2 NaN 1
這裏是數據集(相關列我需要使用)和這裏的一部分是我想要的輸出看起來像:
29, H2, 09, J5, C5, J4, J2
即:如果BI爲0,我希望BERTH的值,然後是FROM_BERTH的值,直到BI變爲1,然後返回給我BERTH(直到BI再次變爲1,等等)。
這裏有以下代碼我試圖及其結果:
test_berth2 = []
for i in range(0,6):
if df3_test.loc[i,'BI'] == 0 & df3_test.iloc[i,21] != df3.iloc[i-1,21]:
test_berth2.append(df3_test.loc[i,'BERTH'])
test_berth2.append(df3_test.loc[i,'FROM_BERTH'])
elif df3_test.loc[i,'BI'] == 0 & df3_test.iloc[i,21] == df3.iloc[i+1,21]:
test_berth2.append(df3_test.loc[i,'FROM_BERTH'])
else :
test_berth2.append(df3_test.loc[i,'BERTH'])
test_berth2
結果:
['29', 'H2', '29', '09', '29', 'J5', 'C5', 'J4', 'J2']
循環2:
for i in range(0,6):
if df3_test.iloc[i,21] == 0:
print (df3_test.loc[i,'BERTH'])
while df3_test.iloc[i,21] == 0:
print (df3_test.loc[i,'FROM_BERTH'])
i = i+1
else:
print (df3_test.loc[i,'BERTH'],'1')
結果:
29, H2, 09, J5, 29, 09, J5, 29, J5, C5 1, J4 1, J2 1
PS:在ILOC列21是 'BI' 順便說一句
在你的第一個「for」循環中,如果/ elif的條件下,確保了&號正在做你想要什麼他們去做。我懷疑你需要布爾(「和」)而不是按位(「&」)運算符。 –
從未嘗試過,謝謝你的建議會給它一個去。希望這會起作用! –