Python/Pandas遍历列

2024-09-28 17:15:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个像这样的数据帧(有许多附加的列)

          age1     age2      age3     age 4   \
Id#     
1001         5        6         2          8  
1002         7        6         1          0
1003        10        9         7          5
1004         9       12         5          9 

我正在尝试编写一个循环,将每个列与之前的列相加,并将其返回到新的数据帧。 我从以下几个方面开始:

^{pr2}$

我得到的错误是

    ls = [x,x+1]

TypeError: Can't convert 'int' object to str implicitly

我知道int和str是不同的对象,但是我如何克服这个问题,或者有没有不同的方法来迭代列? 谢谢!在


Tags: 数据idconvertageobject错误canls
2条回答

听起来cumsum就是您要找的:

In [5]: df
Out[5]: 
      age1  age2  age3  age4
Id#                         
1001     5     6     2     8
1002     7     6     1     0
1003    10     9     7     5
1004     9    12     5     9

In [6]: df.cumsum(axis=1)
Out[6]: 
      age1  age2  age3  age4
Id#                         
1001     5    11    13    21
1002     7    13    14    14
1003    10    19    26    31
1004     9    21    26    35

您可以将^{}^{}edDataFrame一起使用:

print (df.shift(-1,axis=1))
      age1  age2  age3  age4
Id#                         
1001   6.0   2.0   8.0   NaN
1002   6.0   1.0   0.0   NaN
1003   9.0   7.0   5.0   NaN
1004  12.0   5.0   9.0   NaN

print (df.add(df.shift(-1,axis=1), fill_value=0))
      age1  age2  age3  age4
Id#                         
1001  11.0   8.0  10.0   8.0
1002  13.0   7.0   1.0   0.0
1003  19.0  16.0  12.0   5.0
1004  21.0  17.0  14.0   9.0

如果需要使用1进行移位(默认参数,省略):

^{pr2}$

相关问题 更多 >