pandas 1.4.2

ParametersRaisesReturns
update(self, other, join: 'str' = 'left', overwrite: 'bool' = True, filter_func=None, errors: 'str' = 'ignore') -> 'None'

Aligns on indices. There is no return value.

Parameters

other : DataFrame, or object coercible into a DataFrame

Should have at least one matching index/column label with the original DataFrame. If a Series is passed, its name attribute must be set, and that will be used as the column name to align with the original DataFrame.

join : {'left'}, default 'left'

Only left join is implemented, keeping the index and columns of the original object.

overwrite : bool, default True

How to handle non-NA values for overlapping keys:

  • True: overwrite original DataFrame's values with values from other .

  • False: only update values that are NA in the original DataFrame.

filter_func : callable(1d-array) -> bool 1d-array, optional

Can choose to replace values other than NA. Return True for values that should be updated.

errors : {'raise', 'ignore'}, default 'ignore'

If 'raise', will raise a ValueError if the DataFrame and other both contain non-NA data in the same place.

Raises

ValueError
  • When :None:None:`errors='raise'` and there's overlapping non-NA data.

  • When errors is not either :None:None:`'ignore'` or :None:None:`'raise'`

NotImplementedError
  • If :None:None:`join != 'left'`

Returns

None : method directly changes calling object

Modify in place using non-NA values from another DataFrame.

See Also

DataFrame.merge

For column(s)-on-column(s) operations.

dict.update

Similar method for dictionaries.

Examples

This example is valid syntax, but we were not able to check execution
>>> 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

The DataFrame's length does not increase as a result of the update, only values at matching index/column labels are updated.

This example is valid syntax, but we were not able to check execution
>>> 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

For Series, its name attribute must be set.

This example is valid syntax, but we were not able to check execution
>>> df = pd.DataFrame({'A': ['a', 'b', 'c'],
...  'B': ['x', 'y', 'z']})
... new_column = pd.Series(['d', 'e'], name='B', index=[0, 2])
... df.update(new_column)
... df A B 0 a d 1 b y 2 c e
This example is valid syntax, but we were not able to check execution
>>> df = pd.DataFrame({'A': ['a', 'b', 'c'],
...  'B': ['x', 'y', 'z']})
... new_df = pd.DataFrame({'B': ['d', 'e']}, index=[1, 2])
... df.update(new_df)
... df A B 0 a x 1 b d 2 c e

If other contains NaNs the corresponding values are not updated in the original dataframe.

This example is valid syntax, but we were not able to check execution
>>> 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
See :

Local connectivity graph

Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.

Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)

SVG is more flexible but power hungry; and does not scale well to 50 + nodes.

All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them


File: /pandas/core/frame.py#7441
type: <class 'function'>
Commit: