python update函数_Python 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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值