Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python函数中的变量问题,未定义_Python_Azure_Databricks_Azure Databricks - Fatal编程技术网

python函数中的变量问题,未定义

python函数中的变量问题,未定义,python,azure,databricks,azure-databricks,Python,Azure,Databricks,Azure Databricks,我目前正在Azure Databricks上使用Python。最近,您正在使用的群集进行了更新,现在我的解决方案无法正确运行。我今天的错误恰恰是: NameError:(“未定义名称'ajuste_fecha',”在索引处出现 0') 代码如下: from pyspark.sql.types import * from pyspark.sql.functions import * import pandas as pd import datetime # from datetime import

我目前正在Azure Databricks上使用Python。最近,您正在使用的群集进行了更新,现在我的解决方案无法正确运行。我今天的错误恰恰是:

NameError:(“未定义名称'ajuste_fecha',”在索引处出现 0')

代码如下:

from pyspark.sql.types import *
from pyspark.sql.functions import *
import pandas as pd
import datetime
# from datetime import datetime  
from pyspark.sql import SQLContext
import json
import re
import requests
from pandas.io.json import json_normalize
import json
import os
from os import listdir
from os.path import isfile, join
import io

def f_ajuste_fecha(fecha):
  global ajuste_fecha
  if fecha[0:3] == "Ene" :
    ajuste_fecha = "01"
  elif fecha[0:3] == "Feb" :
    ajuste_fecha = "02"
  elif fecha[0:3] == "Mar" :
    ajuste_fecha = "03"
  elif fecha[0:3] == "Abr" :
    ajuste_fecha = "04"
  elif fecha[0:3] == "May" :
    ajuste_fecha = "05"
  elif fecha[0:3] == "Jun" :
    ajuste_fecha = "06"
  elif fecha[0:3] == "Jul" :
    ajuste_fecha = "07"
  elif fecha[0:3] == "Ago" :
    ajuste_fecha = "08"
  elif fecha[0:3] == "Sep" :
    ajuste_fecha = "09"
  elif fecha[0:3] == "Oct" :
    ajuste_fecha = "10"
  elif fecha[0:3] == "Nov" :
    ajuste_fecha = "11"
  elif fecha[0:3] == "Dic" :
    ajuste_fecha = "12"
  return ajuste_fecha

res = requests.get("https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PD04637PD/csv/")
df = pd.read_csv(io.StringIO(res.text.strip().replace("<br>","\n")), engine='python')

df.rename(columns={'Tipo de cambio - TC Interbancario (S/ por US$) - Compra':'valor'} , inplace=True)
df.rename(columns={'D&iacute;a/Mes/A&ntilde;o':'fecha'} , inplace=True)

df['periodo_temp'] = df.apply(lambda x : x['fecha'][3:9],axis=1)
df['periodo_temp_2'] = df.apply(lambda x : '20' +  x['fecha'][7:9] + '-' + f_ajuste_fecha(x['periodo_temp'][0:3])  + '-' + x['fecha'][0:2] ,axis=1)


df['periodo'] = pd.to_datetime(df['periodo_temp_2'], format='%Y-%m-%d')

df_temp = df[df['periodo'] == df['periodo'].max()]
df_2 = df_temp[['periodo', 'valor']]
df_dolar = df_2
df_dolar
从pyspark.sql.types导入*
从pyspark.sql.functions导入*
作为pd进口熊猫
导入日期时间
#从日期时间导入日期时间
从pyspark.sql导入SQLContext
导入json
进口稀土
导入请求
从pandas.io.json导入json_规范化
导入json
导入操作系统
从操作系统导入listdir
从os.path导入isfile,加入
输入io
def_ajuste_fecha(fecha):
全球ajuste_fecha
如果fecha[0:3]=“Ene”:
ajuste_fecha=“01”
埃利夫·费查[0:3]=“2月”:
ajuste_fecha=“02”
埃利夫·费查[0:3]=“三月”:
ajuste_fecha=“03”
埃利夫·费查[0:3]=“Abr”:
ajuste_fecha=“04”
埃利夫·费查[0:3]=“五月”:
ajuste_fecha=“05”
埃利夫·费查[0:3]=“六月”:
ajuste_fecha=“06”
埃利夫·费查[0:3]=“七月”:
ajuste_fecha=“07”
elif fecha[0:3]=“之前”:
ajuste_fecha=“08”
埃利夫·费查[0:3]=“九月”:
ajuste_fecha=“09”
埃利夫·费查[0:3]=“10月”:
ajuste_fecha=“10”
埃利夫·费查[0:3]=“11月”:
ajuste_fecha=“11”
elif fecha[0:3]=“Dic”:
ajuste_fecha=“12”
返回ajuste_fecha
res=requests.get(“https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PD04637PD/csv/")
df=pd.read\u csv(io.StringIO(res.text.strip().replace(“
”,“\n”)),engine='python') rename(columns={'Tipo de cambio-tcinterbancario(S/por US$)-Compra':'valor'},inplace=True) rename(columns={'Dí;a/Mes/añ;o':'fecha'},inplace=True) df['periodo_temp']=df.apply(λx:x['fecha'][3:9],轴=1) df['periodo_temp_2']=df.apply(λx:'20'+x['fecha'][7:9]+'-'+f_ajuste_fecha(x['periodo_temp'][0:3])+'-'+x['fecha'][0:2],轴=1) df['periodo']=pd.to_datetime(df['periodo_temp_2'],格式=“%Y-%m-%d”) df_temp=df[df['periodo']==df['periodo'].max() df_2=df_温度[['periodo','valor']] df_dolar=df_2 杜拉尔酒店
正如我提到的,之前我没有这个问题。我在函数外部尝试了实例
ajuste\u fecha='
,但也没有成功

我做错了什么?原因是什么

提前非常感谢,我会留意你的回答


你好

那么试试这个-将ajuste\u fecha作为全局删除,并像
ajuste\u fecha='abc'
那样为其分配一个随机字符串'abc',然后运行它。您不会注意到该错误,因此请尝试此操作-将ajuste_fecha作为全局删除,并为其分配一个随机字符串“abc”,如
ajuste_fecha='abc'
,然后运行它。您不会注意到错误

您得到的Api响应与
f\u ajuste\u fecha
方法中的任何条件都不匹配。这就是为什么会出现错误
未定义名称“ajuste\u fecha”

可能是更新将输出从
Sep
更改为
Set
,我刚刚通过点击API进行了检查

Día/Mes/Año,"Tipo de cambio - TC Interbancario (S/ por US$) - Compra"
"08.Set.20","3.54366666666667"
"09.Set.20","3.533"
"10.Set.20","3.54"
"11.Set.20","3.568"
"14.Set.20","3.567"
"15.Set.20","3.54733333333333"
"16.Set.20","3.53633333333333"
"17.Set.20","3.53116666666667"
"18.Set.20","3.52333333333333"
"21.Set.20","3.5455"
"22.Set.20","3.55183333333333"
"23.Set.20","3.57016666666667"
"24.Set.20","3.58033333333333"
"25.Set.20","3.593"
"28.Set.20","3.58816666666667"
"29.Set.20","3.5935"
"30.Set.20","3.59733333333333"
"01.Oct.20","3.60183333333333"
"02.Oct.20","3.618"
您需要更新代码条件以匹配
Set
,而不是
Sep

  elif fecha[0:3] == "Set":      #replace Sep with Set here
    ajuste_fecha = "09"

您得到的Api响应与
f_ajuste\u fecha
方法中的任何条件都不匹配。这就是为什么会出现错误
未定义名称“ajuste\u fecha”

可能是更新将输出从
Sep
更改为
Set
,我刚刚通过点击API进行了检查

Día/Mes/Año,"Tipo de cambio - TC Interbancario (S/ por US$) - Compra"
"08.Set.20","3.54366666666667"
"09.Set.20","3.533"
"10.Set.20","3.54"
"11.Set.20","3.568"
"14.Set.20","3.567"
"15.Set.20","3.54733333333333"
"16.Set.20","3.53633333333333"
"17.Set.20","3.53116666666667"
"18.Set.20","3.52333333333333"
"21.Set.20","3.5455"
"22.Set.20","3.55183333333333"
"23.Set.20","3.57016666666667"
"24.Set.20","3.58033333333333"
"25.Set.20","3.593"
"28.Set.20","3.58816666666667"
"29.Set.20","3.5935"
"30.Set.20","3.59733333333333"
"01.Oct.20","3.60183333333333"
"02.Oct.20","3.618"
您需要更新代码条件以匹配
Set
,而不是
Sep

  elif fecha[0:3] == "Set":      #replace Sep with Set here
    ajuste_fecha = "09"

为什么不先将您的函数更改为dict映射?您不需要行
global ajuste\u fecha
。哦,我同意上面的建议,用dict代替。喂,你是说字典吗?我会这么做,但我不明白为什么我的解决方案不知从哪里起就不起作用了。。。python会被更新吗?为什么我的变量不能正常返回?为什么不先将func f_ajuste_fecha更改为dict映射?您不需要行
global ajuste_fecha
。哦,我同意上面的建议,用dict代替。喂,你是说字典吗?我会这么做,但我不明白为什么我的解决方案不知从哪里起就不起作用了。。。python会被更新吗?为什么我的变量不能正常返回?嗨,谢谢你的回答。我已经添加了您提到的内容,它会返回以下错误:UnboundLocalError:(“赋值前引用的局部变量'ajuste_fecha','occurrent at index 0')我已经在函数之前添加了它。原因是什么?嗨,谢谢你的回复。我已经添加了您提到的内容,它会返回以下错误:UnboundLocalError:(“赋值前引用的局部变量'ajuste_fecha','occurrent at index 0')我已经在函数之前添加了它。原因是什么?