如果我有這樣的資料框,我該如何根據“b”遞減“a”?
df = pd.DataFrame([[100,1], [100,2], [100,3], [100,4], [100,5]], columns=["a", "b"])
df.loc[df.b > 2, 'b'] = 1
df.loc[df.b % 2 == 0, 'a'] -= 10
df.loc[df.b % 2 != 0, 'a'] = np.NaN
期望的結果:
a b
0 NaN 1
1 90 2
2 80 4
3 NaN 5
4 70 6
uj5u.com熱心網友回復:
np.arange您可以減去由開始1乘以創建的陣列中的值10:
df.loc[df.b > 2, 'b'] = 1
m = df.b % 2 == 0
df.loc[m, 'a'] -= np.arange(1, m.sum() 1) * 10
#alternative
#df.loc[m, 'a'] -= np.arange(10, m.sum() * 10 10, 10)
df.loc[~m, 'a'] = np.NaN
print (df)
a b
0 NaN 1
1 90.0 2
2 80.0 4
3 NaN 5
4 70.0 6
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/435750.html
上一篇:在AndroidJetpackcompose中如何實作GestureDetector.SimpleOnGestureListener.....?
下一篇:如何獲得輸入格式的隨機相似整數?
