python中循环的正确语法

延误

我是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的相应“ Round Up”和“ Round Down”值。例如,我想获取“意大利GDP”的第一个值和第二个值,“美国GDP”的第5个和第6个值,等等。我已经为下面的“舍入”值编写了代码(一个我想添加的列数),但不起作用,它仅给出最后一个循环值的结果。您能告诉我正确的做法吗?先感谢您!

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为什么对每一列都有那些特定的行?
import pandas as pd

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, 5, 1, 3, 2, 1, 1, 3, 1, 1],
          'Round Up': [2, 6, 2, 4, 3, 2, 2, 4, 2, 2]}

# read in with 
roundposnew = pd.DataFrame(Values).set_index('GDPs')

# round up and down list
ru = list()
rd = list()

# loop to add values to lists
for i in df.columns:
    fal = df.columns.get_loc(i)  # this is an int, doesn't need int(fal)
    rd.append(df.iloc[roundposnew.loc[i,'Round Down'] - 1, fal])
    ru.append(df.iloc[roundposnew.loc[i, 'Round Up'] + 1, fal])

# add lists to dataframe
roundposnew['rd'] = rd
roundposnew['ru'] = ru

             Observations  Round Down  Round Up        rd        ru
GDPs                                                               
Italian GDP            89           1         2 -0.057750 -0.051142
US GDP                281           5         6 -0.005046 -0.000720
EA GDP                 89           1         2  0.009119  0.014639
FR GDP                169           3         4 -0.009310 -0.005746
DE GDP                105           2         3 -0.023653 -0.010145
CZ GDP                 85           1         2 -0.017287 -0.006948
HU GDP                 89           1         2 -0.068923 -0.057246
UK GDP                169           3         4 -0.027973 -0.024922
NL GDP                 85           1         2 -0.011381 -0.008191
RO GDP                 89           1         2 -0.082121 -0.073923

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

For循环返回不正确的语法

来自分类Dev

R中xpathSApply的正确语法

来自分类Dev

HTML Python正确语法

来自分类Dev

phpDocumentor中InheritDoc的正确语法

来自分类Dev

正确的语法循环通过核心数据NSSet

来自分类Dev

不使用range()或xrange()的Python中的For循环语法

来自分类Dev

C#中for循环的正确语法是什么?

来自分类Dev

正确的Swift 2.2语法和for循环

来自分类Dev

Python-FOR循环未在嵌套字典中写入正确的值

来自分类Dev

如何正确编写用于执行和绘制for循环操作的语法?

来自分类Dev

使用foreach循环容器在表中创建新列-无法解决“'@ P1'附近的语法不正确”错误

来自分类Dev

在Julia中循环。语法混乱

来自分类Dev

在Python中连接多个布尔检查的正确语法是什么?

来自分类Dev

Python for循环语法

来自分类Dev

MySQL中BETWEEN的正确语法

来自分类Dev

R中xpathSApply的正确语法

来自分类Dev

正确的Regex语法,用于Python中的re.sub替换

来自分类Dev

Python中的相对导入正确的语法和要求

来自分类Dev

正确的Swift 2.2语法和for循环

来自分类Dev

PATH中for循环变量的正确语法是什么?

来自分类Dev

在bash中循环-语法

来自分类Dev

括号内的Python for循环语法

来自分类Dev

python语法错误,尽管语法正确

来自分类Dev

公式中的循环语法

来自分类Dev

php 中的正确语法

来自分类Dev

Python - 循环语句语法

来自分类Dev

从 foreach 循环创建数组的正确语法

来自分类Dev

在python中使用For循环使其语法正确

来自分类Dev

FOR 循环中 IF 语句的正确语法是什么?