我有一个1行的数据框,我试图从某些列中提取值来进行计算,错误:TypeError:“NoneType”对象不可下标
失败发生在我添加的地方-**
代码:
result = []
for kur, knb, bm_pp, zzavcurr, wa, datefrom, dateto in zip(df.kur, df.knb, df.bm_pp, df.zzavcurr, df.wa, df.datefrom, df.dateto):
if kur == knb:
result.append(bm_pp)
elif kur != knb and wa == "HUF":
result.append(bm_pp)
elif kur != knb and wa in ("SEK", "DKK", "MXN"):
result.append(bm_pp)
elif kur != knb and knb == 'IA' and wa not in ("SEK", "DKK", "MXN", "USD", "HUF"):
df = getExchangeRate(ctx, knb, wa, bm_pp, zzavcurr, datefrom, dateto, dfTC)
** bm_pp_usd_off = df['bm_pp'].values[0] / df['zzavcurr'].values[0]
bm_pp_c_new = bm_pp_usd_off / df['ukurs'].values[0]
result.append(bm_pp_c_new)
else:
result.append("Fail")
df["bm_pp_c_new"] = result
def getExchangeRate(ctx, knvv_kurst, waers, bm_pp, zzavcurr, datefrom, dateto, dfTC):
if datefrom == dateto:
data = [[knb, wa, bm_pp, zzavcurr, datefrom, dateto]]
df_BA = pd.DataFrame(data, columns=['knb', 'wa', 'bm_pp', 'zzavcurr', 'datefrom', 'dateto'])
dfBA = ctx.spark_session.createDataFrame(df_BA)
dfR = dfBA.join(dfTC, (dfBA.knb == dfTC.kur_TC) & (dfBA.wa == dfTC.fcurr) & ('USD' == dfTC.tcurr) & (dfBA.datefrom == dfTC.gdatu), how='left')
df = dfR.toPandas()
return (df)
else:
data = [[knb, wa, bm_pp, zzavcurr, datefrom, dateto]]
df_BA = pd.DataFrame(data, columns=['knb', 'wa', 'bm_pp', 'zzavcurr', 'datefrom', 'dateto'])
dfBA = ctx.spark_session.createDataFrame(df_BA)
dfR = dfBA.join(dfTC, (dfBA.knb == dfTC.kur_TC) & (dfBA.wa == dfTC.fcurr) & ('USD' == dfTC.tcurr) & (dfBA.datefrom == dfTC.gdatu), how='left')
df = dfR.toPandas()
return (df)
数据帧:
负责人:
行(knb='IATA',wa='EUR',bm_pp=1.08084,zzavcurr=1926.13,datefrom=datetime.date(2020,2,1),dateto=datetime.date(2020,2,1),kur='IATA',fcurr='EUR',tcurr='USD',gdatu=datetime.date(2020,2,1),ukurs=-0.90202)
这段代码在pandas 1.0.1中适用。df列是否用于计算数值数据类型?你哪里有打字错误吗
由于您的计算使用标量,您是否尝试过使用.at
相关问题 更多 >
编程相关推荐