Python pandas.DataFrame.update函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.update方法的使用。

DataFrame.update(other, join='left', overwrite=True, filter_func=None, errors='ignore') [source]

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

在索引上对齐,没有返回值。

参数:

other DataFrame, 或 对象可强制转换为DataFrame

应该至少有一个与原始DataFrame匹配的index/column标签。

如果传递了一个Series,则必须设置它的name属性,

并将其用作列名,以便与原始的DataFrame保持一致。

join :{'left'}, 默认为'left'

只实现left join,保留原始对象的索引和列。

overwrite :bool, 默认为 True

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

1) True:用其他 DataFrame的值覆盖原始数据的值。

2) False:仅更新原始DataFrame中NA的值。

filter_func :

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

可以选择替换NA以外的值。

对于应该更新的值返回True。

errors :{‘raise’, ‘ignore’}, 默认为‘ignore’

如果为'raise'

则当DataFrame和其他两者在同一位置包含非NA数据时,

将引发ValueError 。

在版本0.24.0中更改:

raise_conflict = False | True

更改 为errors ='ignore'|'raise'

返回值

None : 方法直接更改调用对象

Raises

ValueError

error ='raise'并且有重叠的非NA数据时。

当错误不是 ‘ignore’或 ‘raise’

NotImplementedError

如果join != ‘left’

例子

>>> 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

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

>>> 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
>>> 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

如果其他包含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

文档:pandas.DataFrame.update.html

推荐阅读
cjavapy编程之路首页