【问题标题】:Append to a pd.DataFrame, dynamically allocating any new columns附加到 pd.DataFrame,动态分配任何新列
【发布时间】:2020-03-07 18:41:31
【问题描述】:

我想将一些 API 响应聚合到一个 DataFrame 中。

请求始终返回许多 json 键值对,比如 A、B、C。但有时它会返回 A、B、C、D。

我想要一些类似于 SQL 的 OUTER JOIN 的东西,它只会添加新行,同时将相应的先前列填充为 NULL 或其他占位符。

pandas 加入选项坚持为边强加一个独特的后缀,我真的不想要这个。

我看错了吗?

如果没有简单的解决方案,我可以只选择始终可用的列的一个子集,但我真的很想下载该批次并将处理作为一个单独的阶段。

【问题讨论】:

    标签: python pandas dataframe join merge


    【解决方案1】:

    您可以使用pandas.concat,因为它提供了您的问题所需的所有功能。让这个玩具问题说明可能的解决方案。

    # This generates random data with some key and value pair.
    def gen_data(_size):
      import string
      keys = list(string.ascii_uppercase)
      return dict((k,[v]) for k,v in zip(np.random.choice(keys, _size),np.random.randint(1000, size=_size)))
    
    counter = 0
    df = pd.DataFrame()
    while True:
      if counter > 5:
        break;
    
      # Recieve the data
      new_data = gen_data(5)
    
      # Converting this to dataframe obj
      new_data = pd.DataFrame(new_data) 
    
      # Appending this data to my stack
      df = pd.concat((df, new_data), axis=0, sort=True)
    
      counter += 1
    
    df.reset_index(drop=True, inplace=True)
    print(df.to_string())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 2018-11-25
      • 1970-01-01
      • 2018-02-13
      • 2019-03-06
      • 2011-12-24
      • 1970-01-01
      相关资源
      最近更新 更多