如何在一个数据框中减去两个连续的行?



我有一个像这样的dataFrame (python):

x   y   z   time
0   0.730110    4.091428    7.833503    1618237788537
1   0.691825    4.024428    7.998608    1618237788537
2   0.658325    3.998107    8.195119    1618237788537
3   0.658325    4.002893    8.408080    1618237788537
4   0.677468    4.017250    8.561220    1618237788537

我想在这个dataFrame中添加一个名为computed的列。这一列包括如下计算的值:第0行:(0.730110-0)^2 +(4.091428-0)^2 +(7.833503-0)^2第一行:(0.691825 -0.730110)^2 +(4.024428- 4.091428)^2 +(7.998608-7.833503)^2

请问你怎么能这样做呢?

TL;

df['computed'] = df.diff().pow(2).sum(axis=1)
df.at[0, 'computed'] = df.loc[0].pow(2).sum()

Step by Step:

import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3, 4, 5, 6], 'b': [1, 1, 2, 3, 5, 8], 'c': [1, 4, 9, 16, 25, 36]})
df
#    a  b   c
# 0  1  1   1
# 1  2  1   4
# 2  3  2   9
# 3  4  3  16
# 4  5  5  25
# 5  6  8  36
df.diff()
#      a    b     c
# 0  NaN  NaN   NaN
# 1  1.0  0.0   3.0
# 2  1.0  1.0   5.0
# 3  1.0  1.0   7.0
# 4  1.0  2.0   9.0
# 5  1.0  3.0  11.0
df.diff().pow(2)
#      a    b      c
# 0  NaN  NaN    NaN
# 1  1.0  0.0    9.0
# 2  1.0  1.0   25.0
# 3  1.0  1.0   49.0
# 4  1.0  4.0   81.0
# 5  1.0  9.0  121.0
df.diff().pow(2).sum(axis=1)
# 0      0.0
# 1     10.0
# 2     27.0
# 3     51.0
# 4     86.0
# 5    131.0
df['computed'] = df.diff().pow(2).sum(axis=1)
df
#    a  b   c  computed
# 0  1  1   1       0.0
# 1  2  1   4      10.0
# 2  3  2   9      27.0
# 3  4  3  16      51.0
# 4  5  5  25      86.0
# 5  6  8  36     131.0
df.at[0, 'computed'] = df.loc[0].pow(2).sum()
df
#    a  b   c  computed
# 0  1  1   1       3.0
# 1  2  1   4      10.0
# 2  3  2   9      27.0
# 3  4  3  16      51.0
# 4  5  5  25      86.0
# 5  6  8  36     131.0

相关文档及相关问题:

  • .diff()的行差;
  • .pow(2)将每个cell平方;
  • .sum(axis=1)行求和;
  • 如何计算数据框中列的每个单元格的n次幂的和;
  • 为pandas DataFrame中的特定单元格设置值?

相关内容

  • 没有找到相关文章