需要添加数学公式以根据下面的行(一直到数据框的顶部)计算结果
import pandas as pd
n = 2
df = pd.DataFrame({'A': [2, 4, 8, 7, 1, 8, 2, 4],'B': [10, 2, 1, 8, 2, 4, 8, 7]})
df.loc[7, 'C'] = df.loc[7, 'A']
print(df)
打印上面的内容,然后阅读下面的内容:
我要使C列中的单元格高于4.0(即单元格C6):
((4.0 (cell c7) * 2) + cellA6 (ie 2.0)/n) = 5
那么单元格C5如下
((5.0 (cell c6) * 2) + cellA5 (ie 8.0)/n) = 9
等
因此,我需要基于C列的bottom / last .loc单元,从C列的倒数第二个单元格开始进行计算。计算完第二个单元格之后,将继续根据其下方的单元格滚动来计算上述单元格数据框顶部的方式
答案 0 :(得分:1)
您可以尝试使用DataFrame
遍历for loop
的反向词,并使用"C"
更新loc
的值:
for idx in df.index[::-1][:-1]:
df.loc[idx - 1, 'C'] = (df.loc[idx, 'C'] * 2 + df.loc[idx - 1, 'A']) / n
print(df)
A B C
0 2 10 20.0
1 4 2 19.0
2 8 1 17.0
3 7 8 13.0
4 1 2 9.5
5 8 4 9.0
6 2 8 5.0
7 4 7 4.0