我有一個 Pandas 資料集,我想計算一個列元素與同一列的另一個元素相比的差異。為此,最直觀的應用方法是.diff()
到目前為止,一切都很好。問題是我的列包含nan沒有特定順序模式的值,例如以下示例,其中包含名為 的列col:
| col |
|-----|
0 | 1 |
1 | NaN |
2 | 3 |
3 | 4 |
4 | NaN |
5 | NaN |
6 | 10 |
7 | NaN |
8 | 13 |
我想做的是僅將該.diff()方法應用于column 的前面數值,這樣預期的答案是:
| col |
|-----|
0 | NaN |
1 | NaN |
2 | 2 |
3 | 1 |
4 | NaN |
5 | NaN |
6 | 6 |
7 | NaN |
8 | 3 |
如果它是nan值的周期性順序,我可以使用該方法的periods引數,如此處所述。但是,鑒于這些值以隨機順序出現,我想知道如何做到這一點?.diff()nan
uj5u.com熱心網友回復:
您需要dropna設定一個臨時變數,reindex如下所示:
import numpy as np
df = pd.DataFrame({"col": [1, np.nan, 3, 4, np.nan, np.nan, 10, np.nan, 13]})
idx = df.index # create index from original data
tmp = df.dropna() # drop nan rows
tmp.diff().reindex(idx) # reindex to original index
>>>
| col |
|-----|
0 | NaN |
1 | NaN |
2 | 2 |
3 | 1 |
4 | NaN |
5 | NaN |
6 | 6 |
7 | NaN |
8 | 3 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/488331.html
上一篇:基于另一個列值創建新列
