pandas DataFrame 设置值问题

今天碰到一个异常怪异的问题,关于DataFrame设置值不成功的问题。

以往设置值,像下面这样的代码都是可以成功赋值修改

df.iloc[3]['B'] = df2.iloc[-1]['H']

但是今天使用的一个复杂数据,在类似的代码下,竟然死活不能赋值修改,还报WARNING。

    特别奇怪的是,说我尝试给一个切片的复制赋值。本来还以为是自己代码写错了,毕竟Dataframe各种括号很容易写错位置,检查了好久,觉得没问题,就点进了报错给出的链接http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy 。然后就解决了问题,简直是太贴心了。

    注意到上图的WARNING:被设置操作所返回的,无论是拷贝还是引用,都有可能会依赖上下文。这种被叫做链式赋值的情况应该被避免。隐隐感觉到自己今天的复杂数据操作是链式赋值,所以点进去链接继续看。

                发现了没,本来以为同样的操作竟然得到的数据 名称是不一样的。这就是官方说的链式赋值的情况吧。具体可以大家自己去链接看。

                继续往下看,发现了官方坑爹的说法。

    看到没!官方说没人能知道,他们也不知道!玄学敲代码阿这是

    所以,官方建议的操作是改iloc为loc。

df.iloc[3]['B'] = df2.iloc[-1]['H']   ——>    df.loc[3, 'B'] = df2.iloc[-1]['H']

    踩坑结束,小伙伴们引以为鉴。

你可能感兴趣的:(pandas DataFrame 设置值问题)