代码之家  ›  专栏  ›  技术社区  ›  run-out

将数据帧行分配给变量

  •  0
  • run-out  · 技术社区  · 7 年前

    我有一个按日期索引的df,它有许多列。我在一个函数中的特定日期处理一行,然后我将在不同的日期上迭代,每次选择一行进行修改。

    这一行有很多计算,我发现

    df.loc[current_date, 'select_columns']` #messy. 
    

    我将整行更改为:

    r = pd.Series (df.loc[current_date, :])
    

    这样的话,你就可以说:

    r[field_name]
    

    我可以通过这种方法查看和更新数据,然后在计算完成后将序列重新分配到df行。

    虽然这确实有效,但我的问题是。。。有没有一种更好的更像Python的方式来访问数据帧中的一行以进行许多计算?

    1 回复  |  直到 7 年前
        1
  •  0
  •   busybear Danny Boy150    7 年前

    IIUC,您正试图找到一种很好的方法来迭代行,并从每行中获取特定的值。可以使用 iterrows 并检索您提到的值:

    for ix, row in df.iterrows():
        row[field_names]
        ...
    

    如果您对设置数据帧的值感兴趣, row[field_names] = val 行不通。这 related post 可能有兴趣。通常,您必须使用“一次操作”(例如 df.loc[row, col] = value )设置值。链式操作不会影响原始数据帧。就是 df.loc[row, :][col] 不会影响原版 df .和我举的例子一样 row{field_names] = val 出于同样的原因。