【问题标题】:How to compare value in Pandas DataFrame against a value in the previous row AND the previous column?如何将 Pandas DataFrame 中的值与上一行和上一列中的值进行比较?
【发布时间】:2020-07-29 19:06:43
【问题描述】:

我有一个数据框,由两列填充浮点值组成。我需要在当前“h”值之前的索引处计算“h”的所有值减去“c”的所有值。 因此,例如,对于第 1 行中的“h”,我需要计算 1.17322 - 1.17285(上一行中“c”的值) 我尝试了几种不同的方法来实现这一点,包括使用:.iloc、.shift()、.groupby() 和 .diff(),但我无法得到我想要的。

如果有人能帮忙,将不胜感激

    c        h
0   1.17285  1.17310
1   1.17287  1.17322
2   1.17298  1.17340
3   1.17346  1.17348
4   1.17478  1.17511
5   1.17595  1.17700
6   1.17508  1.17633
7   1.17474  1.17545
8   1.17463  1.17546
9   1.17224  1.17468
10  1.17437  1.17456
11  1.17552  1.17641
12  1.17750  1.17784
13  1.17694  1.17770

【问题讨论】:

  • 试试df.h.shift(-1)-df.c

标签: python pandas loops dataframe


【解决方案1】:

使用shift 试试这个,例如:

df['c_shift'] = df['c'].shift()
df['diff'] = df['h'] - df['c_shift']
print(df)

输出:

          c        h  c_shift     diff
0   1.17285  1.17310      NaN      NaN
1   1.17287  1.17322  1.17285  0.00037
2   1.17298  1.17340  1.17287  0.00053
3   1.17346  1.17348  1.17298  0.00050
4   1.17478  1.17511  1.17346  0.00165
5   1.17595  1.17700  1.17478  0.00222
6   1.17508  1.17633  1.17595  0.00038
7   1.17474  1.17545  1.17508  0.00037
8   1.17463  1.17546  1.17474  0.00072
9   1.17224  1.17468  1.17463  0.00005
10  1.17437  1.17456  1.17224  0.00232
11  1.17552  1.17641  1.17437  0.00204
12  1.17750  1.17784  1.17552  0.00232
13  1.17694  1.17770  1.17750  0.00020

当然,您可以一步完成:

df['diff'] = df['h'] - df['c'].shift()

【讨论】:

  • 非常感谢!这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多