【问题标题】:Pandas Loop through list of Data Frames and Change IndexPandas 循环遍历数据框列表和更改索引
【发布时间】:2017-06-19 21:11:48
【问题描述】:

这是一个基本问题,但我想遍历数据框列表,并为每个数据框,将索引设置为数据框中的列之一。下面代码的问题是它没有使用新索引保存数据框。如何格式化此 For 循环,以便在 for 循环之外永久更改数据帧?谢谢。

dflist = [df_1, df_2, df_3]

for i in dflist:
    i = i.set_index('column_2')

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可能已经猜到了,i 只是一个临时值。使用枚举仅将 i 用作索引

    for i, df in enumerate(dflist):
    dflist[i] = dflist[i].set_index('column_2'))
    

    【讨论】:

    • 是的!反响很大。感谢您的输入。这更有意义。
    • 这样做的唯一原因是,如果您使用数据框创建一个新列表,因为运行时将不得不创建一个数据框并将其复制到列表中,并在该索引处 gc 旧项目。那么最好就地使用,但要谨慎使用,因为不可变语义更容易推理。
    • 是的。我会去看看什么对我更有效。谢谢。
    【解决方案2】:
    for i in dflist:
        i.set_index('column_2', inplace=True)
    

    【讨论】:

      【解决方案3】:

      尝试使用就地选项: i = i.set_index('column_2', inplace=True)

      【讨论】:

      • 在循环中分配 df 只会给你一个不必要的副本,在循环范围结束时立即 gc:ed。
      猜你喜欢
      • 1970-01-01
      • 2021-08-20
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 2021-01-19
      • 2016-04-25
      相关资源
      最近更新 更多