python - pandas diff() 为一阶差分给出 0 值,我想要实际值

标签 python pandas numpy dataframe

我有 df:

Hour  Energy Wh  
1        4          
2        6           
3        9
4        15

我想添加一个显示每小时差异的列。我正在使用这个:

df['Energy Wh/h'] = df['Energy Wh'].diff().fillna(0)

df1:

Hour  Energy Wh  Energy Wh/h
1        4          0
2        6          2 
3        9          3
4        15         6

但是,第 1 小时的值在 Energy Wh/h 列中显示为 0,而我希望它显示为 4,如下所示:

Hour  Energy Wh  Energy Wh/h
1        4          4
2        6          2 
3        9          3
4        15         6

我试过使用 np.where:

df['Energy Wh/h']  = np.where(df['Hour'] == 1,df['Energy Wh'].diff().fillna(df['Energy Wh']),df['Energy Wh'].diff().fillna(0))

但我在第 1 小时行 (df1) 中仍然得到 0 值,没有错误。如何获取要填充的第 1 小时的“Energy Wh”值,而不是 0?

最佳答案

您可以只对原始列进行 fillna(),而无需使用 np.where:

>>> df['Energy Wh/h'] = df['Energy Wh'].diff().fillna(df['Energy Wh'])
>>> df
      Energy Wh  Energy Wh/h
Hour
   1          4          4.0
   2          6          2.0
   3          9          3.0
   4         15          6.0

关于python - pandas diff() 为一阶差分给出 0 值,我想要实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42748566/

相关文章:

python - Pandas ,忽略 NaN 的滚动最大值

python - matplotlib 中的 MPLCCONFIGDIR 错误

python - 在每个 x 位置合并 2 个列表

python - Pandas : Count Intervall

Python Numpy 错误 : ValueError: setting an array element with a sequence

python - 结合python中2个类的函数

python - 如何将 Pandas 数据框传递给分布式工作人员?

python - 创建将字典中的 2 个键映射到相同值的数据框列

python - 比较字典中的列表并获得获胜 key

python - Scipy.optimize.minimize 返回不正确的结果