首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么"rows[" epic_week“] =epic_week”不起作用?

为什么"rows[" epic_week“] =epic_week”不起作用?
EN

Stack Overflow用户
提问于 2020-09-18 00:51:00
回答 2查看 30关注 0票数 0

我尝试在pandas数据框中添加一个新列。当我想通过使用iterrows()函数来更新时,"rows"epic_week“= epic_week”不起作用。

代码语言:javascript
复制
date_counter = 5
pre_date = df.Date[0]
epic_week = 9
df["epic_week"] = 0
for index, rows in df.iterrows():
    if rows["Date"] != pre_date:
        date_counter += 1
        pre_date = rows["Date"]
        if date_counter > 7:
            date_counter = 1
            epic_week += 1
        rows["epic_week"] = epic_week
EN

回答 2

Stack Overflow用户

发布于 2020-09-18 01:51:16

在这里查看第二个注释:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iterrows.html。您正在迭代您的数据帧,所以您不应该在迭代它时尝试修改它。

您可以尝试创建df的副本并在更新原始副本的同时迭代该副本,或者在循环中保存要添加到数据结构中的更改,然后在迭代完成后将其添加到df中。

票数 0
EN

Stack Overflow用户

发布于 2020-09-18 01:53:35

尝试这样做,更改最后一行,如下所示

代码语言:javascript
复制
date_counter = 5
pre_date = df.Date[0]
epic_week = 9
df["epic_week"] = 0
for index, rows in df.iterrows():
    if rows["Date"] != pre_date:
        date_counter += 1
        pre_date = rows["Date"]
        if date_counter > 7:
            date_counter = 1
            epic_week += 1
        rows.at[index, "epic_week"] = epic_week # This will work
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63942749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档