pandas将行值计算为同一行和上一行中先前值的函数

问题描述 投票:0回答:1

如果我有这样的桌子

       A  B  C  D  E
row1   1  2  3  4  5
row2   5  6  7  8  9

我想计算row3,因为row1移位(1,轴= 1)+ row2 - row3中的值移位(1,轴= 1)[这是先前计算的价格,左边的单元格]它将是相同的在Excel中应用以下公式

A3 = A2
B3 = A1 + B2 - A3
C3 = B2 + C2 - B3
[and so on]

结果必须在一个操作中计算,输出应该像这样:

       A  B  C  D  E
row1   1  2  3  4  5
row2   5  6  7  8  9
row3   5  2  7  4  9
python pandas
1个回答
1
投票

正如评论中提到的Arpit,您可以使用for循环和iloc来实现您的需求:

df = pd.read_csv(pd.compat.StringIO('''A  B  C  D  E
1  2  3  4  5
5  6  7  8  9'''),sep='\s+')

df.loc[2,'A'] = 5

for i in range(1,len(df.columns)):
    df.iloc[2,i] = df.iloc[0,i-1] + df.iloc[1,i] - df.iloc[2,i-1]

输出:

In [43]: df

Out[43]:

    A   B   C   D   E
0   1.0 2.0 3.0 4.0 5.0
1   5.0 6.0 7.0 8.0 9.0
2   5.0 2.0 7.0 4.0 9.0
© www.soinside.com 2019 - 2024. All rights reserved.