Python:使用取决于先前值的值填充数据框中的列

问题描述

我需要找到一种简洁的方法来用以下代码填充数据框:

x = 1
df.at[x,'col2']=df.at[x,'col1'] + df.at[x-1,'col2']
x = 2
df.at[x,'col2']
x = 3
df.at[x,'col2']
x = 4
df.at[x,'col2']

...等等,直到最后一行。 每行代码取决于以上代码的结果,因此我不确定是否可以使用滚动功能?我也尝试过.shift(1),但也没有成功。 基本上我需要从x = 1到x =最后一列计算以上

以以下示例为例:

       col1         col2
0       0             0
1       1           value above (0) plus value from col1 (1) = 1
2       3           value above (1) plus value from col1 (3) = 4 

有人可以帮忙吗?

解决方法

一种快速的解决方案,可以通过将其通用化来解决(这是针对特定问题的)

import pandas as pd
d = {'col1': [1,2,3],'col2': [4,5,6]}
df = pd.DataFrame(data=d)
print(df,"\n\n")
x = len(df)
df.iloc[1:,1] = df.iloc[1:x,0].values + df.iloc[0:x-1,1].values

print(df)

我使用.value来解决给出NaNs的索引问题,并得到了遇到同样问题的post的帮助。

返回,

   col1  col2
0     1     4
1     2     5
2     3     6 


   col1  col2
0     1     4
1     2     6
2     3     8

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...