相关疑难解决方法(0)

熊猫:链式作业

我一直在阅读这个链接的"返回视图与副本".我真的不明白的是如何链接分配在熊猫的概念工作和如何的使用.ix(),.iloc()或者.loc()影响它.

我得到SettingWithCopyWarning以下代码行的警告,其中data是Panda数据帧,并且amount是该数据帧中的列(系列)名称:

data['amount'] = data['amount'].astype(float)

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

data["amount"].fillna(mean_avg, inplace=True)
Run Code Online (Sandbox Code Playgroud)

看看这段代码,我做的事情显然不是很理想吗?如果是这样,你能告诉我更换代码行吗?

我知道下面的警告,并且认为我的案例中的警告是误报:

链式分配警告/异常旨在通知用户可能无效的分配.可能存在误报; 无意中报告链式作业的情况.

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

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:"
Run Code Online (Sandbox Code Playgroud)

python copy pandas chained-assignment

15
推荐指数
1
解决办法
1万
查看次数

pandas:df.loc[-1,col] 有时有效,有时使用 NAN 添加额外行

我有一个熊猫数据框。我正在尝试修改name最后一行中的列值

我尝试

df.loc[-1,'name'] = "something"
Run Code Online (Sandbox Code Playgroud)

这有效

df现在我用查询过滤几行并调用它df_query

我的最后一行df_query

    id  name
21  965 kris
Run Code Online (Sandbox Code Playgroud)

我检查索引-1

df_query.loc['name'].iloc[-1]
Run Code Online (Sandbox Code Playgroud)

它显示“克里斯”

现在df_query我尝试

df_query.loc[-1,'name'] = "something"
Run Code Online (Sandbox Code Playgroud)

它添加了一个额外的行而不是替换krissomething

    id  name
21  965.0 kris
-1  NaN "something"
Run Code Online (Sandbox Code Playgroud)

还将 id 转换为floatfromint

为什么有时有效有时无效

后来搜索后我发现/sf/answers/3465732861/

仅使用 iloc[-1, 'a] 不起作用,因为 -1 不在索引中。

我无法理解上面给出的原因

并说要尝试:

df_query.loc[df_query.loc.index[-1],'name'] = "something"
Run Code Online (Sandbox Code Playgroud)

现在可以了。

有人可以解释发生了什么吗

pandas

3
推荐指数
1
解决办法
2616
查看次数

标签 统计

pandas ×2

chained-assignment ×1

copy ×1

python ×1