【问题标题】:Get specific elements of a list using a list iteration使用列表迭代获取列表的特定元素
【发布时间】:2022-10-23 18:14:55
【问题描述】:

我正在尝试构建以下数据框

df  = pd.DataFrame(columns=['Year','Revenue','Gross Profit','Operating Profit','Net Profit']) 
rep_vals =['year','net_sales','gross_income','operating_income','profit_to_equity_holders']

 for i in range (len(yearly_reports)): 
    df.loc[i] = [yearly_reports[i].x for x in rep_vals] 

但是我得到错误按照..“报告”对象没有属性“x”

代码的以下(蛮力版本)有效:

for i in range (len(yearly_reports)): 
    df.loc[i] = [yearly_reports[i].year,yearly_reports[i].net_sales ,
                 yearly_reports[i].gross_income, yearly_reports[i].operating_income, 
                 yearly_reports[i].profit_to_equity_holders]

但是,我的问题是我想添加更多列,而且我不想将 yearly_reports 中的每个项目都提取到数据框中,请问如何更有效地迭代我想要的值?

【问题讨论】:

  • getattr(yearly_reports[i], x)?
  • yearly_reports 是什么?
  • 请提供Minimal, Reproducible Example,目前,您的代码无法运行,因为我们缺少了解正在发生的事情所需的变量。
  • @Lecdi - 您的解决方案非常出色,谢谢!
  • @Umar.H - 它包含一个名为报告的定制类的列表,通过 API 获取,其中包含一些与财务报表相关的数据。

标签: python pandas list dataframe iteration


【解决方案1】:

不要使用.x,而是使用[x]

yearly_reports[i][x]

此外,像这样迭代您的数据框可能是一个坏主意/没有必要/缓慢。看看加入/合并可能会快很多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 2014-02-13
    • 1970-01-01
    • 2019-04-18
    相关资源
    最近更新 更多