【问题标题】:Concat DataFarme instead of Printing (Python/for loop)Concat DataFrame 而不是打印(Python/for 循环)
【发布时间】:2020-04-18 05:42:42
【问题描述】:

我正在拼命地尝试不从串联数据帧中的循环(年增长率)返回我的结果,但下面的循环只是打印出每个数据帧。这个循环在一个函数中。

感谢您的帮助。

for i in ODList:
    start_value = float(Grouped3[i].iloc[0])
    end_value = float(Grouped3[i].iloc[-1])
    num_periods = len(Grouped3)
    TopCAGR = pd.DataFrame({'Dest Code':[i],'CAGR':cagr(start_value, end_value, num_periods)})
    print (TopCAGR)

谢谢。周末愉快。

最大

【问题讨论】:

标签: python pandas dataframe loops for-loop


【解决方案1】:

您可以对数据框使用 do apply 来获得结果。下面是一个使用组合函数 cagr 的示例,但只要您的函数有效,它就应该可以工作:

def cagr(S,E,P): 
    return (E-S)/P 

Grouped3 = pd.DataFrame({'A':[1,2,3],'B':[4,5,7],'C':[9,4,5]})
ODList = ['A','B']

使用连接:

TopCAGR=[]
for i in ODList:
    start_value = float(Grouped3[i].iloc[0])
    end_value = float(Grouped3[i].iloc[-1])
    num_periods = len(Grouped3)
    TopCAGR.append(pd.DataFrame({'Dest Code':[i],'CAGR':cagr(start_value, end_value, num_periods)}))

pd.concat(TopCAGR)
  Dest Code      CAGR
0         A  0.666667
0         B  1.000000

使用应用:

TopCAGR = pd.DataFrame({
    'Dest Code':ODList,
    'TopCAGR' : Grouped3[ODList].apply(lambda x:cagr(x.iloc[0],x.iloc[-1],len(x)))
})

  Dest Code   TopCAGR
A         A  0.666667
B         B  1.000000

【讨论】:

    猜你喜欢
    • 2014-01-24
    • 2015-02-15
    • 2020-06-18
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2021-09-24
    • 2017-08-16
    相关资源
    最近更新 更多