【问题标题】:Adding loop results as rows in dataframe将循环结果添加为数据框中的行
【发布时间】:2020-05-09 10:12:45
【问题描述】:

我试图让这个for 循环将结果打印为同一数据帧的相应行。我尝试了这段代码,但它似乎不起作用。它现在给出一个索引错误,因为它为每次迭代输出单独的空数据帧。

list2=[(('ATM',), ('ROA',)), (('ATM',), ('ROE',)), (('ATM',), ('NIM',)), (('ATM',), ('ROA', 'ROE')), (('ATM',), ('ROA', 'NIM'))]
tm_final = {0: 3, 1: 6, 2: 4, 3: 2, 4: 0}
totalrows=sum(tm_final[i]>0 for i in tm_final)
df=pd.DataFrame(columns=['A','B','C'])
for i in tm_final:
  if tm_final[i]>0:
    for j in range(totalrows):
      df.iloc[j,0]=i
      df.iloc[j,1]=str(list2[i])
      df.iloc[j,2]=tm_final[i]
    print(df)

想要的结果:

   A                B                             C
   0  (('ATM',), ('ROA',))                        3
   1  (('ATM',), ('ROE',))                        6
   2  (('ATM',), ('NIM',))                        4
   3  (('ATM',), ('ROA', 'ROE'))                  2

【问题讨论】:

    标签: python-3.x list for-loop


    【解决方案1】:
    tm_final = {key: value for (key, value) in tm_final.items() if value > 0 }
    df=pd.DataFrame(columns=['A','B','C'])
    df.A = tm_final.keys()
    df.B = list2
    df.C = tm_final.values()
    df
       A                     B  C
    0  0      ((ATM,), (ROA,))  3
    1  1      ((ATM,), (ROE,))  6
    2  2      ((ATM,), (NIM,))  4
    3  3  ((ATM,), (ROA, ROE))  2
    

    【讨论】:

    • 不,请检查if 条件,因为它不满足条件,所以第 5 次迭代不会打印任何行。你的代码没有解决问题
    • 请再次检查代码。我错过了第一行。谢谢
    • 条件也需要放在list2
    • 你能具体说明一下需求吗,list2 有 5 项,tm_final 现在有 4 项
    【解决方案2】:

    找到了一个更好的方法,在这里发布。

    list2=[(('ATM',), ('ROA',)), (('ATM',), ('ROE',)), (('ATM',), ('NIM',)), (('ATM',), 
    ('ROA', 'ROE')), (('ATM',), ('ROA', 'NIM'))]
    tm_final = {0: 3, 1: 6, 2: 4, 3: 2, 4: 0}
    df=pd.DataFrame(columns=['A','B','C'])
    
    for i in tm_final:
      if tm_final[i]>0:
          df=df.append({'A':i,'B':list2[i],'C':tm_final[i]},ignore_index=True)
    print(df)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      相关资源
      最近更新 更多