迭代熊貓資料框中的行時遇到問題
這是我要運行的代碼
data = {'test':[1,1,0,0,3,1,0,3,0],
'test2':[0, 2, 0,1,1,2,7,3,2],
}
df = pd.DataFrame(data)
df['combined'] = df['test'] df['test2']
df['combined'].astype('float64')
df
for index, row in df.iterrows():
if row['test']>=1 & row['test2']>=1:
row['combined']/=2
else:
pass
因此,如果 test 和 test2 的值都為 1 或更大,則它應該除以 2,但是它不會除以所有應該除以的行。
我在某個地方犯了錯誤嗎?
這是我運行代碼時的結果,對應的列是 test、test2 和 combine
0 1 0 1
1 1 2 3
2 0 0 0
3 0 1 1
4 3 1 2
5 1 2 3
6 0 7 7
7 3 3 3
8 0 2 2
uj5u.com熱心網友回復:
您正在使用&按位與運算子。您應該使用and布爾 AND 運算子。這導致該if宣告給出了您不期望的答案。
uj5u.com熱心網友回復:
您所做的通常是一種不好的做法,因為如果不是嚴格必要,出于性能原因應該避免迭代行,解決方案是根據您的條件定義掩碼并使用 .loc 在掩碼內操作:
data = {'test':[1,1,0,0,3,1,0,3,0],
'test2':[0, 2, 0,1,1,2,7,3,2],
}
df = pd.DataFrame(data)
df['combined'] = df['test'] df['test2']
df['combined'].astype('float64')
mask = (df['test']>=1) & (df['test2']>=1)
df.loc[mask,'combined'] /=2
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446695.html
上一篇:如何在回圈中間重復值?
