pandas.DataFrame.update #

数据框。update ( other , join = 'left' , overwrite = True , filter_func = None , error = 'ignore' ) [来源] #

使用另一个 DataFrame 中的非 NA 值进行适当修改。

按索引对齐。没有返回值。

参数
其他DataFrame,或可强制转换为 DataFrame 的对象

应该至少有一个与原始 DataFrame 匹配的索引/列标签。如果传递了 Series,则必须设置其 name 属性,并且该属性将用作列名称以与原始 DataFrame 对齐。

加入{'left'},默认'left'

仅实现左连接,保留原始对象的索引和列。

覆盖布尔值,默认 True

如何处理重叠键的非 NA 值:

  • True:用其他DataFrame 的值覆盖原始 DataFrame 的值。

  • False:仅更新原始 DataFrame 中为 NA 的值。

filter_func callable(1d-array) -> bool 1d-array, 可选

可以选择替换NA以外的值。对于应更新的值返回 True。

错误{'raise', 'ignore'}, 默认 'ignore'

如果“raise”,如果 DataFrame 和其他 数据在同一位置都包含非 NA 数据,则会引发 ValueError 。

返回
没有任何

该方法直接改变调用对象。

加薪
值错误
  • 错误=“引发”并且存在重叠的非 NA 数据时。

  • 错误不是“忽略”“引发”时

未实现错误
  • 如果join != '左'

也可以看看

dict.update

字典的方法类似。

DataFrame.merge

用于列对列的操作。

例子

>>> df = pd.DataFrame({'A': [1, 2, 3],
...                    'B': [400, 500, 600]})
>>> new_df = pd.DataFrame({'B': [4, 5, 6],
...                        'C': [7, 8, 9]})
>>> df.update(new_df)
>>> df
   A  B
0  1  4
1  2  5
2  3  6

DataFrame 的长度不会因更新而增加,仅更新匹配索引/列标签处的值。

>>> df = pd.DataFrame({'A': ['a', 'b', 'c'],
...                    'B': ['x', 'y', 'z']})
>>> new_df = pd.DataFrame({'B': ['d', 'e', 'f', 'g', 'h', 'i']})
>>> df.update(new_df)
>>> df
   A  B
0  a  d
1  b  e
2  c  f
>>> df = pd.DataFrame({'A': ['a', 'b', 'c'],
...                    'B': ['x', 'y', 'z']})
>>> new_df = pd.DataFrame({'B': ['d', 'f']}, index=[0, 2])
>>> df.update(new_df)
>>> df
   A  B
0  a  d
1  b  y
2  c  f

对于Series,必须设置其name属性。

>>> df = pd.DataFrame({'A': ['a', 'b', 'c'],
...                    'B': ['x', 'y', 'z']})
>>> new_column = pd.Series(['d', 'e', 'f'], name='B')
>>> df.update(new_column)
>>> df
   A  B
0  a  d
1  b  e
2  c  f

如果other包含 NaN,则原始数据帧中不会更新相应的值。

>>> df = pd.DataFrame({'A': [1, 2, 3],
...                    'B': [400., 500., 600.]})
>>> new_df = pd.DataFrame({'B': [4, np.nan, 6]})
>>> df.update(new_df)
>>> df
   A      B
0  1    4.0
1  2  500.0
2  3    6.0