【问题标题】:Calculate looping through dataframe通过数据框计算循环
【发布时间】:2021-07-12 12:06:21
【问题描述】:

我有以下代码。

import pandas as pd

df = pd.DataFrame({'c1': [10, 11, 12], 'c2': [100, 110, 120]})
print(df)

for index, row in df.iterrows():
    df['c3'][index] = df['c1'][index] + df['c2'][index]
    print(df['c1'][index], df['c2'][index], df['c3'][index])

print(df)

我想要做的是遍历数据框并添加第三列,其中包含其他两列的总和。最终结果应该是这样的。

   c1   c2  c3
0  10  100  110
1  11  110  121
2  12  120  132

目前我遇到了问题KeyError: 'c3'

如何实现我想要的?

【问题讨论】:

  • df["c3"] = df.sum(1)
  • 返回 330、363 和 396。这是错误的。有没有办法像示例中那样指定列?
  • 你可以这样做:df["c3"] = df[["c1", "c2"]].sum(1)

标签: python pandas numpy loops jupyter-notebook


【解决方案1】:

您可以轻松做到以下几点:

df["c3"]=df["c1"]+df["c2"]

【讨论】:

  • 作为对此的跟进,在我的循环中,我做了一个微积分,然后使用datetime.timedelta(calculus) 将其转换为天数,但我得到一个 TypeError TypeError: unsupported type for timedelta days component: Series?关于如何解决这个问题的任何想法?
  • 微积分是数据框还是系列?
  • 在循环内部,我从某一列中的一行获取值,从另一列获取另一个值,然后我执行此操作datetime.timedelta((1/freq)*days[1]),然后将此结果与新列中列的值相加.因此,我认为微积分是一个系列,因为 days[1] 是一个整数,但每一行的频率都在变化。
  • 其实我不知道怎么做。对不起:(
  • 我实际上是通过尝试和错误发现的。是datetime.timedelta((1/freq[index])*days[1]) 谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-03-29
  • 2016-03-23
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2021-05-08
相关资源
最近更新 更多