当前位置: 首页 > 面试题库 >

如何在Python Pandas DataFrame中的特定行中更新值?

景恩
2023-03-14
问题内容

有了Pandas中不错的索引方法,我就可以用各种方式提取数据了。另一方面,我仍然对如何更改现有DataFrame中的数据感到困惑。

在下面的代码中,我有两个DataFrames,我的目标是从第二个df的值更新第一个df中特定行的值。我该如何实现?

import pandas as pd
df = pd.DataFrame({'filename' :  ['test0.dat', 'test2.dat'], 
                                  'm': [12, 13], 'n' : [None, None]})
df2 = pd.DataFrame({'filename' :  'test2.dat', 'n':16}, index=[0])

# this overwrites the first row but we want to update the second
# df.update(df2)

# this does not update anything
df.loc[df.filename == 'test2.dat'].update(df2)

print(df)

   filename   m     n
0  test0.dat  12  None
1  test2.dat  13  None

[2 rows x 3 columns]

但是我怎么能做到这一点:

    filename   m     n
0  test0.dat  12  None
1  test2.dat  13  16

[2 rows x 3 columns]

问题答案:

因此,首先, 大熊猫使用index更新
。当更新命令不更新任何内容时,请同时检查左侧和右侧。如果由于某种原因您懒于更新索引以遵循标识逻辑,则可以按照以下步骤进行操作:

>>> df.loc[df.filename == 'test2.dat', 'n'] = df2[df2.filename == 'test2.dat'].loc[0]['n']
>>> df
Out[331]: 
    filename   m     n
0  test0.dat  12  None
1  test2.dat  13    16

如果要对整个表执行此操作,建议使用一种我认为优于上述方法的方法:由于您的标识符为filename,请设置filename为索引,然后update()根据需要使用。两者mergeapply()方法都包含不必要的开销:

>>> df.set_index('filename', inplace=True)
>>> df2.set_index('filename', inplace=True)
>>> df.update(df2)
>>> df
Out[292]: 
            m     n
filename           
test0.dat  12  None
test2.dat  13    16


 类似资料:
  • 问题内容: 我一直在尝试更新特定行已有一段时间了,看来有两种方法可以做到这一点。根据我的阅读和尝试,你可以使用: 方法 或者: 方法。 (让我知道这是否不正确,因为我是android新手,还是SQL新手。) 因此,让我了解我的实际代码。 我正在努力做到这一点: 更新主键()等于1的Field1,Field2和Field3。 Eclipse在“更新”一词的正下方给了我一条红线,并给出了以下解释: S

  • 问题内容: 我正在将SQLAlchemy与python结合使用,并且我想更新等于此查询的表中的特定行: 我通过sql alchemy编写了此代码,但无法正常工作: 返回此错误: 我该怎么做? 问题答案: 通常,您不使用,而是设置属性:

  • 我正在尝试执行一个更新,内容如下: 如果当前时间晚于拍卖结束时间(即非活动),则将表的列设置为。否则,设置为“1”。 我一直在犯这个错误。。 javax。servlet。ServletException:java。sql。SQLException:结果集关闭后不允许操作 我怎么去修理这样的东西?

  • 问题内容: 我遇到的问题是,状态的重新呈现会导致ui问题,并建议仅更新reducer内的特定值以减少页面上的重新呈现量。 这是我的状态的例子 我目前正在这样更新 其中是包含新值的整个数组。但是现在我实际上只需要更新内容数组中第二个项目的文本,这样的事情就行不通了 现在我需要更新的文本在哪里。 问题答案: 您可以使用React不变性助手 虽然我想您可能会做更多这样的事情?

  • 背景: < li >我正在使用< code>npm和< code>docker在< code>node.js中编写代码。我试图让我的docker文件在构建时使用缓存,这样不会花太长时间。 < li >我们有一个“通用”存储库,用于保存在各种存储库中使用的逻辑,并通过npm软件包进行传播。 问题是: 我希望docker文件不要使用我的“通用”包上的缓存。 Docker文件: package.json

  • 我想从链表中删除所有偶数节点。如何更新hashmap特定键中的节点<代码>H.get(0)。next=temp不工作。期望的输出是24,但我没有得到它。