【问题标题】:Iteration in the data frame pandas数据框 pandas 中的迭代
【发布时间】:2019-01-14 21:25:17
【问题描述】:

我有以下数据

group   exog    endog
A   1.2 0.23
A   1.3 0.34
A   1.4 0.45
B   1.5 0.56
B   1.6 0.67
B   1.7 0.78
C   1.8 0.89
C   1.9 1
C   2   1.11

像这样:

 def regression(df, exog, endog):
import statsmodels.api as sm

reg2 = sm.OLS(endog=df[exog], 
              exog=df[endog], 
              missing='drop')

results = reg2.fit()

df_ols_coefs = results.params.to_frame().T
df_ols_coefs.columns = [str(col) + '_coef' for col in df_ols.columns]

return df_ols_coefs

我想过从原始数据帧制作“子”数据帧,但我被卡住了。 我应该选择类似的东西吗:

 for df in df_orginal:
   NOW I AM STUCK

? 解释真的会帮助我:D 谢谢!

【问题讨论】:

  • 你能详细解释一下是什么样的处理吗?

标签: python pandas


【解决方案1】:

如果需要一些通用功能进行处理,您可以使用flexible groupby.apply

def regression(df, exog, endog):
    import statsmodels.api as sm

    reg2 = sm.OLS(endog=df[exog], 
                  exog=df[endog], 
                  missing='drop')

    results = reg2.fit()

    df_ols_coefs = results.params.to_frame().T
    #it seems typo - change to df_ols_coefs
    df_ols_coefs.columns = [str(col) + '_coef' for col in df_ols_coefs.columns]

    return df_ols_coefs

df1 = df.groupby('group').apply(regression, 'exog','endog')
print (df1)
         endog_coef
group              
A     0    3.633423
B     0    2.361952
C     0    1.892071

【讨论】:

  • 嗨@jezrael,我想通过statmodels 对子df 执行回归。在子 df 上,我想将回归的系数保存到我想存储它们的一些通用 df 中。你认为它会通过你的代码工作吗?请问,你能解释一下申请吗?我对应用有点迷茫。谢谢!
  • @HeadOverFeet - 我添加到文档的链接,但很简单,如果检查每个循环的 print (x),它会返回每个组的 Dataframe。还要检查最后一个红色警报为什么第一组返回两次。 ;)
  • @HeadOverFeet - 或this,这取决于需要什么。
  • 嗨,Jez,我遇到了这种错误:'DataFrame' 对象是可变的,因此它们不能被散列不知道有什么问题吗?函数返回的列与数据框中的列不同
  • @HeadOverFeet - 是否可以更改数据样本以运行您的代码?也许还有更多列?
【解决方案2】:

你只需要:

for name, df in df_orginal.groupby(['group']):
   print(name)
   # Do something with df

您需要做的是按“组”列对数据进行分组。然后迭代组。 'name' 变量是您的组,例如 1(或 2,或 3)。 'df' 是一个 DataFrame,包含与该组相关的所有数据(1 或 2,或 3)

【讨论】:

    猜你喜欢
    • 2023-01-14
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 2020-10-05
    • 2014-11-25
    • 2021-02-26
    相关资源
    最近更新 更多