【问题标题】:Pandas fill column with multiple lists熊猫用多个列表填充列
【发布时间】:2021-02-09 01:14:08
【问题描述】:

我正在尝试用多个不同大小的列表填充两个 pandas 列。 例如,我的第一列包含“血管成形术、主动脉、动脉”等列表,第二列包含“251、2882、401、4019、412”之类的列表

首先我尝试像这样附加每个列表:

matches.code_matches.append(code_series)

导致了这个类型错误:

TypeError: cannot concatenate object of type '<class 'list'>'; only Series and DataFrame objs are valid

所以我尝试将列表转换为系列并使用以下代码将它们附加到数据框:

code_series = pd.Series( (v[0] for v in code_matches))
matches.code_matches.append(code_series)

但是,在添加系列之后,我的 Dataframe 仍然是空的。

填充不同大小的 Dataframe 列表的列的最佳方法是什么?请注意,我想保留列表并将它们填充到单个字段中,而不是分别填充每个元素(我想将值分配给 id)

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    用途:

    In [704]: l1 = ['angioplasty', 'aortic', 'artery']
    
    In [705]: l2 = [251, 2882, 401, 4019, 412]
    
    In [707]: df = pd.DataFrame({'a': pd.Series(l1), 'b': pd.Series(l2)})
    
    In [708]: df
    Out[708]: 
                 a     b
    0  angioplasty   251
    1       aortic  2882
    2       artery   401
    3          NaN  4019
    4          NaN   412
    

    【讨论】:

      【解决方案2】:

      我在下面的代码中使用了.at 方法,它似乎有效。

      x = pd.DataFrame()
      
      x['A'] = 1,2,3,4,5,6
      x['B'] = 1.0,2,3,4,5,6
      x['C'] = 9,8,7,6,5,4
      
      x['D']=0
      x['D']=x['D'].astype('object')
      
      for i in range(len(x)): x.at[i,'D'] = list(np.random.rand(3))
      

      您可以将list(np.random.rand(3)) 替换为您自己的数据。

      【讨论】:

        猜你喜欢
        • 2021-05-13
        • 2021-03-18
        • 2018-03-25
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 2019-11-21
        • 2021-10-04
        • 1970-01-01
        相关资源
        最近更新 更多