我試圖弄清楚我的資料框中的值是否在數十/數百處增加。例如,我創建了一個帶有幾個值的資料框,我復制了這些值并移動了它們,現在我可以比較它們了。但是我如何編碼并找出十位是增加還是增加一點,例如 0.02 點。
import pandas as pd
import numpy as np
data = {'value':['9','10','19','22','31']}
df = pd.DataFrame(data)
df['value_copy'] = df['value'].shift(1)
df['Increase'] = np.where(df['value']<df['value_copy'],1,0)
在這種情況下,輸出應該是:[nan,1,0,1,1]
uj5u.com熱心網友回復:
IIUC,除以 10,得到floor,然后比較連續值 ( diff(1)) 看差值是否正好為 1:
np.floor(df['value'].astype(float).div(10)).diff(1).eq(1).astype(int)
如果你想跳到至少下一個十(或更多)使用ge(≥):
np.floor(df['value'].astype(float).div(10)).diff(1).ge(1).astype(int)
輸出:
0 0
1 1
2 0
3 1
4 1
Name: value, dtype: int64
注意。如果您堅持使用 NaN:
s = np.floor(df['value'].astype(float).div(10)).diff(1)
s.eq(1).astype(int).mask(s.isna())
輸出:
0 NaN
1 1.0
2 0.0
3 1.0
4 1.0
Name: value, dtype: float64
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/493422.html
上一篇:如何在條形圖上減少條形?
下一篇:從XML字串中提取某些部分
