首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫:连锁作业

熊猫:连锁作业
EN

Stack Overflow用户
提问于 2014-01-30 17:37:52
回答 1查看 22.9K关注 0票数 18

我一直在阅读这个关于“返回视图与复制”的链接。我并不真正理解链赋值概念在Pandas中是如何工作的,以及.ix().iloc().loc()的使用如何影响它。

我得到了以下代码行的SettingWithCopyWarning警告,其中data是Panda dataframe,amount是该dataframe中的列(系列)名称:

代码语言:javascript
复制
data['amount'] = data['amount'].astype(float)

data["amount"].fillna(data.groupby("num")["amount"].transform("mean"), inplace=True)

data["amount"].fillna(mean_avg, inplace=True)

看看这段代码,是否很明显,我正在做一些不太理想的事情?如果是的话,你能告诉我替换代码行吗?

我知道以下的警告,并认为我的警告是假的:

链接的外派警告/异常旨在通知用户可能无效的外派。可能会出现假阳性;在这种情况下,链式分配会被无意地报告。

编辑:导致第一次复制警告错误的代码。

代码语言:javascript
复制
data['amount'] = data.apply(lambda row: function1(row,date,qty), axis=1) 
data['amount'] = data['amount'].astype(float)

def function1(row,date,qty):
    try:
        if(row['currency'] == 'A'):
            result = row[qty]
        else:
            rate = lookup[lookup['Date']==row[date]][row['currency'] ]
            result = float(rate) * float(row[qty])
        return result
    except ValueError: # generic exception clause
        print "The current row causes an exception:"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-30 17:49:49

SettingWithCopy的目的是警告用户,您可能正在做一些不像人们所期望的那样更新原始数据框架的事情。

在这里,data是一个dataframe,可能是单一的dtype (或者不是)。然后,您将引用这个data['amount'],它是一个系列,并对其进行更新。这在您的情况下可能有效,因为您正在返回与现有数据相同的数据类型。

但是,它可以创建一个副本来更新您看不到的data['amount']副本;然后您可能会想知道为什么它没有更新。

熊猫在几乎所有的方法调用中都返回一个对象的副本。inplace操作是一种方便的操作,但通常不清楚数据是否正在被修改,并且可能在副本上工作。

要做到这一点要清楚得多:

代码语言:javascript
复制
data['amount'] = data["amount"].fillna(data.groupby("num")["amount"].transform("mean"))

data["amount"] = data['amount'].fillna(mean_avg)

再加上复印工作。您可以连锁操作,这在inplace操作中是不可能的。

例如:

代码语言:javascript
复制
data['amount'] = data['amount'].fillna(mean_avg)*2

还有一个小飞人。inplace操作既不快,也不更有效。my2c他们应该被禁止。但在那个API上太晚了。

你当然可以关掉它:

代码语言:javascript
复制
pd.set_option('chained_assignment',None)

熊猫运行与整个测试套件与此设置为raise (所以我们知道是否发生链接),FYI。

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21463589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档