【问题标题】:How to add values from one dataframe into another ignoring the row indices如何将一个数据帧中的值添加到另一个忽略行索引
【发布时间】:2016-02-22 00:12:40
【问题描述】:

我有一个名为 trg_data 的 pandas 数据框来收集我批量生成的数据。每个批次都由一个子例程生成为一个较小的数据帧df,具有相同的列数但行数更少,我想每次将df 中的值插入到trg_data 的新行位置。

但是,当我使用以下语句时,df 总是插入到顶部。 (即第 0 行到 len(df))。

trg_data.iloc[trg_pt:(trg_pt + len(df))] = df

我在猜测,但我认为原因可能是即使切片指示所需的行,它也使用 df 中的索引来决定将数据放在哪里。

作为测试我发现我可以在正确的位置插入一个ndarray没问题:

trg_data.iloc[trg_pt:(trg_pt + len(df))] = np.ones(df.shape)

如何让它忽略 df 中的索引并将数据插入到我想要的位置?还是有完全不同的方法来实现这一目标?归根结底,我只想创建数据框 trg_data ,然后最后保存到文件中。我走这条路是因为似乎没有办法轻松附加到现有数据帧。

我已经为此工作了一个多小时,但我无法弄清楚要谷歌什么才能找到正确的答案!

【问题讨论】:

标签: python pandas dataframe setting


【解决方案1】:

我想我可能有答案(我以为我已经尝试过了,但显然没有):

trg_data.iloc[trg_pt:(trg_pt + len(df))] = df.values

不过,我愿意接受其他建议。可能有更好的方法将数据添加到数据框。

【讨论】:

    【解决方案2】:

    我这样做的方法是将所有中间数据帧保存在一个数组中,然后将它们连接在一起

    import pandas as pd
    dfs = []
    # get all the intermediate dataframes somehow
    
    # combine into one dataframe
    trg_data = pd.concatenate(dfs)
    

    【讨论】:

      【解决方案3】:

      两者

      trg_data = pd.concat([df1, df2, ... dfn], ignore_index=True)
      

      trg_data = pd.DataFrame()    
      for ...: #loop that generates df
          trg_data = trg_data.append(df, ignore_index=True) #you can reuse the name df 
      

      应该为你工作。

      【讨论】:

        猜你喜欢
        • 2020-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        相关资源
        最近更新 更多