【问题标题】:How to sum in a for loop in pandas DataFrame如何在 pandas DataFrame 中的 for 循环中求和
【发布时间】:2022-01-23 19:20:37
【问题描述】:

我是 pandas 的初学者,正在为 for 循环而苦苦挣扎。

我将以下 excel 文件加载到 pandas:

x=pd.read_excel('BTC.xlsx',)
x

这是我得到的:

   BTC obtained
0   0.00567
1   0.00054
2   0.00230

我想使用 for 循环来迭代数字:

n=0
for v in x.iteritems():
    n+=v
    print(n)

当我运行它时,我总是收到以下错误:

TypeError: unsupported operand type(s) for +=: 'int' and 'tuple'

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 我猜你在 for 循环中遇到了错误。 iteritems() 接受两个参数,而不仅仅是单个 v。请参阅pandas.pydata.org/docs/reference/api/… 的文档
  • 是的,你是对的。但我想得到以下结果:0.00567、0.00621 (0.00567+0.00054) 和 0.00851 (0.00621+0.00230)。

标签: python pandas dataframe for-loop iteration


【解决方案1】:

您也可以像这样使用 iterrows():

df = pd.DataFrame({'BTC obtained':[0.00567,0.00054,0.00230]})
print(df)

n=0
for index, row in df.iterrows():
    n+=row["BTC obtained"]
    print(n)

输出

0.00567
0.006209999999999999
0.00851

【讨论】:

  • 没错!有用。非常感谢楼主!
【解决方案2】:

如果您查看iteritems 的文档,您会看到该命令产生了两件事:

  • 标签:对象
  • 内容:系列

这意味着 v 将是一个元组(标签,内容)。如果您想访问该系列,您必须访问 v[1]。

或者,您可以这样做:

对于标签,x.iteritems() 中的 v:

根据您的评论,您似乎想要元素的累积总和。你可以在没有 for 循环的情况下使用 pandas cumsum

n = x.cumsum()

如果您想使用 for 循环,您可以执行以下操作:

n=0  
for label, v in x.iteritems():  
    n+=v['BTC obtained']  
    print(n)

【讨论】:

  • 一个很好的解释!谢谢!
猜你喜欢
  • 2018-08-02
  • 1970-01-01
  • 2019-05-22
  • 2016-11-22
  • 2020-01-07
  • 1970-01-01
  • 2023-01-08
  • 1970-01-01
  • 2020-01-19
相关资源
最近更新 更多