我有一个带有df.shape = (36, 17)
的熊猫数据帧。数据框架包含了荷兰的17项经济和财政指标,这些指标是36年来测量的。你知道吗
我正试图复制一个基于规则的欧洲协议,该协议为欧洲成员国提供了一个确切的指示,即每年所需的财政调整应该有多大。这一必要的财政调整取决于政府债务水平和产出缺口(这是经济周期的一个经济指标)。具体说明见下表。你知道吗
(来源:voxeu.org)
上表中的相关指标在我的数据框中有以下名称:
我现在尝试用Python代码复制这个表,以计算在我的数据框架中所有年份所需的年度财政调整。你知道吗
不幸的是,如果我运行下面的代码,我会得到len(reqsb) = 21456
。但它应该等于36
的年数。你知道吗
问:我找不到窃听器。有没有人能告诉我正确的长度?
很抱歉这么长的故事顺便说一句,但想提供足够的信息:-)
reqsb = []
for debt in df.gov_debt_perct_mev:
if (debt <= 60.0):
for og in df.output_gap_pf_sf:
if (og < -4.0):
reqsb.append(0)
if (og >= -4.0) & (og < -3.0):
reqsb.append(0)
if (og >= -3.0) & (og < -1.5):
for diff in df.diff_pg_ag:
if (diff > 0):
reqsb.append(0.25)
else:
reqsb.append(0)
if (og >= -1.5) & (og < 1.5):
reqsb.append(0.5)
if (og >= 1.5):
for diff in df.diff_pg_ag:
if (diff > 0):
reqsb.append(0.76)
else:
reqsb.append(0.51)
else:
for og in df.output_gap_pf_sf:
if (og < -4.0) :
reqsb.append(0)
if (og >= -4.0) & (og < -3.0):
reqsb.append(0.25)
if (og >= -3.0) & (og < -1.5):
for diff in df.diff_pg_ag:
if (diff > 0):
reqsb.append(0.5)
else:
reqsb.append(0.25)
if (og >= -1.5) & (og < 1.5):
reqsb.append(0.51)
if (og >= 1.5):
for diff in df.diff_pg_ag:
if (diff > 0):
reqsb.append(1.0)
else:
reqsb.append(0.76)
好吧,看起来,每次你循环时,你评估
36
项,因为对于每个循环你没有选择数据帧的特定单元格,而是选择一整列。你知道吗由于要迭代数据帧中的每一行(转换为每年),并计算特定单元格中每个值的阈值,因此应在数据帧} 方法:
df
上使用^{这意味着您要对每个单元格进行特定年份的评估,以确定它应该具有什么值。你知道吗
这里需要注意的是,您可能把binary and ^{} operator 和logical and ^{} 混淆了。你知道吗
在您的例子中,这实际上并不会破坏您的条件的结果,因为您正在比较
True & False
,作为数字,它的计算结果与您使用&
或and
的结果相同。你知道吗你的问题是:
您向数组中添加了至少xa+xb个条目。 其中x是df.output\间隙\ pf\ sf,是中的条目数债务百分比60岁以下,b是(len(债务百分比)-a)。你知道吗
你不应该在另一个for循环中使用for。你知道吗
此外,您还有类似的问题:
相关问题 更多 >
编程相关推荐