【问题标题】:Python Pandas with functions and column equal values具有函数和列相等值的 Python Pandas
【发布时间】:2015-09-10 00:54:35
【问题描述】:

我正在尝试创建一个采用已格式化的函数 json.loads()。

def data_fp(fp):
    for line in fp:
    try:
         data=json.loads(line)
         json_data.append(data)
    except:
        continue

我拿了 json_data 并试图清理它。我创建了一个空白数据框并制作了一个函数。

df=pd.DataFrame()

def data_clean(liste):
    df['col1'] = map(lambda datas: datas['col1'] if 'col1' in datas else 'NA', liste)
    df['col2'] = map(lambda datas: datas['col2'] if 'col2' in datas else 'NA', liste)
    df=df[df['col2']=='foo']

问题出在最后一行。当我将它包含在函数中时,我得到一个错误

UnboundLocalError:之前引用的局部变量“df” 作业

但是当我运行没有最后一行的函数时,我没有收到任何错误,我可以在控制台中运行 == 行并获得所需的结果。

为什么在函数中不起作用?

【问题讨论】:

    标签: python pandas global-variables dataframe


    【解决方案1】:

    在函数中分配的任何变量都是该函数的局部变量,除非它被明确声明为全局变量。因此,如果没有赋值,您可以访问全局变量并且一切正常,而通过赋值,您会访问未声明的局部变量,因此会出错。

    看这里:http://effbot.org/pyfaq/how-do-you-set-a-global-variable-in-a-function.htm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 2020-08-20
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      相关资源
      最近更新 更多