[英]Shift values in dataframe to the left if column name == Year and value is NaN pandas
[英]shift a column in a pandas dataframe will set data to NaN
我嘗試在數據框中移動一列,在找到shift方法之前,我嘗試自己做。 我發現了一些有趣的東西。
這是代碼
創建數據框:
df = pd.DataFrame(np.random.randn(5,3))
這是數據:
0 1 2
0 -0.274583 0.141030 1.335455
1 -0.887131 -1.253900 0.395358
2 -0.194082 -0.462745 -0.237422
3 0.095535 0.236268 -1.347387
4 2.210129 -0.816895 -1.225560
如果我這樣做是為了將最后一列向上移動 2 行:
df.loc[0:2,2] = df.loc[2:,2]
結果是,前兩行是 NaN
0 1 2
0 -0.274583 0.141030 NaN
1 -0.887131 -1.253900 NaN
2 -0.194082 -0.462745 -0.237422
3 0.095535 0.236268 -1.347387
4 2.210129 -0.816895 -1.225560
這里有什么問題?
似乎需要將輸出轉換為numpy array
,以防止按索引對齊:
df.loc[0:2,2] = df.loc[2:,2].values
print (df)
0 1 2
0 -0.274583 0.141030 -0.237422
1 -0.887131 -1.253900 -1.347387
2 -0.194082 -0.462745 -1.225560
3 0.095535 0.236268 -1.347387
4 2.210129 -0.816895 -1.225560
解釋為什么您的解決方案不起作用:
輸出按索引對齊,因此如果0,1
索引不存在添加NaN
s:
print (df.loc[2:,2])
2 -0.237422
3 -1.347387
4 -1.225560
Name: 2, dtype: float64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.