我是python新手,我希望看到下面专家的解决方案,因为根据其他数据帧的值从某些数据帧中选择值是我经常使用的
我有下面的第一个df
data = {'Date': ['31/03/1947', '30/06/1947', '30/09/1947', '31/12/1947', '31/03/1948', '30/06/1948', '30/09/1948', '31/12/1948', '31/03/1949', '30/06/1949'],
'Italian GDP': [-0.057750, -0.054695, -0.052334, -0.051142, -0.050267, -0.049659, -0.048984, -0.048839, -0.046507, -0.045941],
'US GDP': [-0.011017, -0.008948, -0.007276, -0.006526, -0.005046, -0.002011, -0.001592, -0.000720, 0.000085, 0.000334],
'EA GDP': [0.009119, 0.010925, 0.011530, 0.014639, 0.015634, 0.016439, 0.018998, 0.025592, 0.032806, 0.035710],
'FR GDP': [-0.011773, -0.010264, -0.009310, -0.009126, -0.006450, -0.005746, -0.004998, -0.004780, 0.001206, 0.004616],
'DE GDP': [-0.030926, -0.023653, -0.023418, -0.021585, -0.010145, -0.006971, -0.005937, -0.005850, -0.005215, -0.000496],
'CZ GDP': [-0.017287, -0.013185, -0.011872, -0.006948, -0.004398, -0.004028, -0.001028, -0.000814, 0.000349, 0.001409],
'HU GDP': [-0.068923, -0.060180, -0.058478, -0.057246, -0.053871, -0.053105, -0.052404, -0.052222, -0.050352, -0.049721],
'UK GDP': [-0.029143, -0.028303, -0.027973, -0.027784, -0.025187, -0.024922, -0.024092, -0.022788, -0.022478, -0.021911],
'NL GDP': [-0.011381, -0.010251, -0.009614, -0.008191, -0.007078, -0.006006, -0.005573, -0.000319, -0.000199, 0.000804],
'RO GDP': [-0.082121, -0.076776, -0.074611, -0.073923, -0.070768, -0.060687, -0.060526, -0.054234, -0.047550, -0.032161]}
# read in with
df = pd.DataFrame(data).set_index('Date')
以及下面的第二个df:
Values = {'GDPs': ['Italian GDP', 'US GDP', 'EA GDP', 'FR GDP', 'DE GDP', 'CZ GDP', 'HU GDP', 'UK GDP', 'NL GDP', 'RO GDP'],
'Observations': [89, 281, 89, 169, 105, 85, 89, 169, 85, 89],
'Round Down': [1.0, 5.0, 1.0, 3.0, 2.0, 1.0, 1.0, 3.0, 1.0, 1.0],
'Round Up': [2.0, 6.0, 2.0, 4.0, 3.0, 2.0, 2.0, 4.0, 2.0, 2.0]}
# read in with
roundposnew = pd.DataFrame(Values).set_index('GDPs')
对于第二个df,我想添加两个额外的列,它们将为我提供第一个df对应的“向上舍入”和“向下舍入”值。例如,我想得到“意大利GDP”的第一个值和第二个值,“美国GDP”的第五个值和第六个值等等。 我已经为“向下舍入”值(我想添加的列之一)编写了下面的代码,但不起作用,它只给出最后一个循环值的结果。你能告诉我做这件事的正确方法吗?提前谢谢你
for i in df.columns:
fal = df.columns.get_loc(i)
ld5 = df.iloc[int(roundposnew.loc[i,'Round Down']-1),int(fal)]
ld5
>>> -0.08212129722076356
roundposnew
时,Round Down
和Round UP
应该是int
,而不是float
(例如1
与1.0
),因为该值正用于索引另一个数据帧。int
df
选择要添加到roundposnew
的值背后的逻辑是什么?为什么每个列都有这些特定的行李>我假设您想添加2个额外的列,您可以这样做: 首先添加两列,其中填充0个值(或任意值),然后使用舍入/舍入公式更新这些值
输出如下所示:
希望这能给你一个解决问题的方法
相关问题 更多 >
编程相关推荐