【问题标题】:How to loop through a Pandas dataframe如何循环遍历 Pandas 数据框
【发布时间】:2016-04-25 00:45:30
【问题描述】:

我正在尝试遍历 Pandas 数据框。列表 L 包含用于指定 XY 应从哪一行开始的值,即 (1:, 2:, 3:)。

list = [1,2,3]

for L in list:
    X = data.ix[L:, 'X':]
    Y = data.ix[L:, 'Y']     
    regressor = LinearRegression()
    regressor.fit(X, Y)
    prediction = regressor.predict([[Variable]])

尝试上述操作时的错误是:

TypeError: 'type' object is not iterable

【问题讨论】:

  • 你不是说for l in L:吗?您正在尝试迭代 list 类型,为什么还要在每次迭代时重新创建回归模型?只需在外面定义一次并引用它
  • 另外,您所做的只是增量切片 df,您可以通过 for df in data.iloc[::1]: X = df['X'] Y = df['Y'] e.t.c.
  • Ed,我在每次迭代中重新创建回归模型,因为 X/Y 的每个子集都是具有不同结果的不同模型。我实际上是在尝试使用模型输入的滚动窗口进行回归。
  • Ed,您能否详细说明您将如何实施您的解决方案。我不太明白。非常感谢。

标签: python numpy pandas scikit-learn


【解决方案1】:

您还可以将其转换为字典或列表,然后使用您所知道的:

list_from_df = df.to_list()
for item in list_from_df:
   print(item)

或作为字典:

df.to_dict()
for key, value in list_from_df.items():
   print(key) # index
   print(value)

【讨论】:

    【解决方案2】:

    IIUC 您可以执行以下操作:

    l = [1,2,3]
    results = []
    
    for idx in l:
        X = data.ix[idx:, 'X':]
        Y = data.ix[idx:, 'Y']     
        regressor = LinearRegression()
        regressor.fit(X, Y)
        results.append(regressor.predict([[Variable]]))
    

    但是,我不知道这里的Variable 是什么,您也可以执行以下操作:

    for df in data.iloc[::1]:
        regressor = LinearRegression()
        regressor.fit(df['X'], df['Y'])
        results.append(regressor.predict([[Variable]]))
    

    【讨论】:

    • 嗨 EdChum - 您发布的第一个示例与我提供的解决方案相似。我得到错误:ValueError:形状(1,1)和(4,)未对齐:1(dim 1)!= 4(dim 0)。对于您的第二个示例,我不清楚您是如何遍历 1、2、3 列表的。
    • 在第二个示例中,我没有遍历列表,它只是展示了如何迭代地切片 df,因为您的新错误应该是 X = data.ix[idx:, 'X']
    • 我遇到了同样的错误:for idx in list:X = data.ix[idx:, 'X':] Y = data.ix[idx:, 'Y']跨度>
    【解决方案3】:

    你应该试试 iterrrows,[http://pandas-docs.github.io/pandas-docs-travis/basics.html#iterrows]

    >>> df = pd.DataFrame([[1, 1.5]], columns=['int', 'float'])
    >>> row = next(df.iterrows())[1]
    >>> row
    int      1.0
    float    1.5
    Name: 0, dtype: float64
    

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 1970-01-01
      • 2018-05-30
      • 2021-08-20
      • 2021-03-15
      • 1970-01-01
      • 2021-09-12
      相关资源
      最近更新 更多