如何在没有应用的情况下获得熊猫数据帧的先前非 NaN 值来计算?

时间:2021-04-15 11:32:39

标签: python pandas dataframe

不使用 apply(因为数据框太大),如何获得特定列的先前非 NaN 值以在计算中使用?

例如,这个数据框:

df = pd.DataFrame([['A',1,100],['B',2,None],['C',3,None],['D',4,182],['E',5,None]], columns=['A','B','C'])
   A  B      C
0  A  1  100.0
1  B  2    NaN
2  C  3    NaN
3  D  4  182.0
4  E  5    NaN

我需要计算第 3 行的“C”列与第 0 行的差值。

值之间的 NaN 值的数量是可变的,那么 .shift() 可能在这里不适用(我认为)

我需要一些像:df['D'] = df.C - df.C[previous_not_nan](第 3 行将是 82。

1 个答案:

答案 0 :(得分:1)

dropna + diff

df['D'] = df['C'].dropna().diff()

   A  B      C     D
0  A  1  100.0   NaN
1  B  2    NaN   NaN
2  C  3    NaN   NaN
3  D  4  182.0  82.0
4  E  5    NaN   NaN