根据行

时间:2015-11-06 05:07:10

标签: python pandas

我有一个这样的数据框:

     Allotment     Date          NDVI_Kurtosis    NDVI_Skewness
1    D             19840621      1.02             3.06
2    D             19850619      1.76             2.56
3    A             19840621      3.66             3.50
4    A             19850619      1.56             3.20

如果AllotmentDate在不同行之间彼此相差1.00之内,我想要返回每个NDVI_Kurtosis和关联的NDVI_Skewness。所以在这种情况下,我希望返回:

 Allotment         Date          NDVI_Kurtosis    NDVI_Skewness
    D             19840621       1.02             3.06
    D             19850619       1.76             2.56
    A             19850619       1.56             3.20

我为此使用了iloc,但到目前为止还没有成功。

1 个答案:

答案 0 :(得分:0)

您可以使用shift函数创建新列,然后将它们与初始列进行比较。

import pandas as pd
df=pd.read_clipboard()
df['NDVI_Kurtosis_lag']=df['NDVI_Kurtosis'].shift(1).fillna(df['NDVI_Kurtosis'])
df['NDVI_Skewness_lag']=df['NDVI_Skewness'].shift(1).fillna(df['NDVI_Skewness'])
df
df2=df[(df['NDVI_Kurtosis']-df['NDVI_Kurtosis_lag']<1) & (df['NDVI_Skewness']-df['NDVI_Skewness_lag']<1)]
df2

Cordialy, 劳伦。