相关疑难解决方法(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万
查看次数

在熊猫中删除未使用类别的更快捷方法?

我在Python中运行一些模型,在类别上使用数据子集.

对于内存使用和预处理,所有分类变量都存储为类别数据类型.

对于我的"分组依据"列中的分类变量的每个级别,我正在运行回归,我需要将所有分类变量重置为该子集中存在的变量.

我目前正在使用它.cat.remove_unused_categories(),这占我总运行时间的近50%.目前,最糟糕的罪犯是我的分组专栏,其他人没有花费太多时间(因为我猜没有多少级别下降).

这是一个简化的例子:

import itertools
import pandas as pd
#generate some fake data
alphabets = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
keywords = [''.join(i) for i in itertools.product(alphabets, repeat = 2)]
z = pd.DataFrame({'x':keywords})

#convert to category datatype
z.x = z.x.astype('category')

#groupby
z = z.groupby('x')

#loop over groups
for i in z.groups:
    x = z.get_group(i)
    x.x …
Run Code Online (Sandbox Code Playgroud)

python pandas categorical-data

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