首页 > 解决方案 > 如何根据其他行更新行?

问题描述

让我用一个例子来问我的问题。例如,我有一个这样的数据框:

DAY     A     B     
0       10    6
1       12    8
2       18    6
3       20    10
4       16    12
5       12    8
6       14    10

我想根据上一列更改每一列。例如,在第 1 行中,我希望我的 A 值为 = (10+12)/2 * 5 = 55。对于 B 值和其他行也是如此。我想要的数据框应该是这样的:

DAY     A     B
1       55    35
2       75    35
3       95    40
4       90    55
5       70    50
6       65    45

我需要你们的帮助。

标签: pythonpandasdataframenumpydata-manipulation

解决方案


用于DataFrame.add添加移位值 byDataFrame.shift与除以2和乘以5和最后仅删除第一NaN行 by DataFrame.iloc

df = df.add(df.shift()).div(2).mul(5).iloc[1:]
print (df)
        A     B
DAY            
1    55.0  35.0
2    75.0  35.0
3    95.0  40.0
4    90.0  55.0
5    70.0  50.0
6    65.0  45.0

或者可以使用rolling meanwith 2for sum 2 rows with 除以2

df = df.rolling(2).mean().mul(5).iloc[1:]
print (df)
        A     B
DAY            
1    55.0  35.0
2    75.0  35.0
3    95.0  40.0
4    90.0  55.0
5    70.0  50.0
6    65.0  45.0

推荐阅读