当前位置: 首页 > 知识库问答 >
问题:

使用loc更新数据帧

黄弘盛
2023-03-14

我有一个列结构的熊猫数据帧(df):

month a b c d

此数据框包含例如1月、2月、3月、4月的数据。A、B、C、D是数字列。对于2月份,我想重新计算列A并在数据框中更新它,即对于月份=2月份,A=B C D

我使用的代码:

 df[df['month']=='Feb']['A']=df[df['month']=='Feb']['B'] + df[df['month']=='Feb']['C'] + df[df['month']=='Feb']['D'] 

这运行时没有出现错误,但没有更改2月份A列中的值。在控制台中,它给出了一条消息

试图在数据帧切片的副本上设置值
尝试使用。loc[row\u indexer,col\u indexer]=改为value

我尝试使用. loc,但现在我正在处理的数据帧,我使用了.reset_index(),我不知道如何设置index和使用. locs。我留档了但不清楚。你能帮帮我吗?这是一个示例数据帧:

 import pandas as pd import numpy as np
 dates = pd.date_range('1/1/2000', periods=8)
 df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D']) 

我想更新一个日期:2000-01-03。我无法给出我的数据片段,因为它是实时数据。

共有2个答案

南宫天逸
2023-03-14

虽然不是最漂亮的,但我实现目标的方式(无需明确迭代行)是:

df.ix[df['month'] == 'Feb', 'a'] = df[df['month'] == 'Feb']['b'] + df[df['month'] == 'Feb']['c']  

注:ix自v0以来已被弃用。20.0支持iloc/loc

伊飞光
2023-03-14

从警告中可以看出,您应该使用loc[row\u index,col\u index]。当您对数据进行子集设置时,会得到索引值。您只需传递行索引,然后用逗号列名称

df.loc[df['month'] == 'Feb', 'A'] = df.loc[df['month'] == 'Feb', 'B'] + df.loc[df['month'] == 'Feb', 'C'] + df.loc[df['month'] == 'Feb', 'D'] 
 类似资料:
  • 全部的 只是想看看用表单中提交的数据更新数据库行的最佳选项是什么。我理解Laravel更新查询生成器,但是我在如何获取表单数据,然后执行该查询方面遇到了困难。相对较新的Laravel:)这是我想出的,只是从我的PHP经验和逻辑: 我曾试图将查询放入一个函数中,然后让表单操作成为函数: 正如我所说,主要问题是试图让命名的表单对象成为更新行的对象。我有两个文本输入字段,分别命名为“body”和“not

  • 我正在用一些初始数据绘制一个条形图,然后在单击按钮时尝试更新。我收到错误“未捕获的类型错误:无法读取未定义的属性'长度'”。单击更新后,将发生错误。如何解决此问题并启用更新功能以绘制新的条形图? D3代码:

  • 概述 使用update()方法更新文档。这个方法接收以下参数: 一个方档匹配的过滤器,用于过滤要更新的文档 一个用来执行修改操作的更新文档 一个可选的参数 指定过滤器和指定查询的时候是一样的。update()方法默认只更新单个文档,使用multi可选参数指定更新所有匹配的文档。 不能更新文档的_id字段。 更新指定字段 要改变某个字段的值,MongoDB提供了更新操作,比如$set用来修改值。如果

  • 更新数据使用Update方法,Update方法的第一个参数为需要更新的内容,可以为一个结构体指针或者一个Map[string]interface{}类型。当传入的为结构体指针时,只有非空和0的field才会被作为更新的字段。当传入的为Map类型时,key为数据库Column的名字,value为要更新的内容。 Update方法将返回两个参数,第一个为 更新的记录数,需要注意的是 SQLITE 数据库

  • 查找并更新 在取出数据后,更改字段内容后更新数据。 $user = UserModel::get(1); $user->user_nickname = '老猫'; $user->user_email = 'genmaowan@163.com'; $user->save(); 直接更新数据 也可以直接带更新条件来更新数据 $user = new UserMode

  • 更新数据表中的数据 Db::name('user') ->where('id', 1) ->update(['user_nickname' => '老猫是家里最懒的猫']); 如果数据中包含主键,可以直接使用: Db::name('user') ->update(['user_nickname' => '老猫是家里最懒的猫', 'id' => 1]); update 方