熊猫用多个列表填充列

时间:2021-02-08 16:58:51

标签: python pandas dataframe

我正在尝试用多个不同大小的列表填充两个 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)

2 个答案:

答案 0 :(得分:0)

使用:

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

答案 1 :(得分:0)

我在下面的代码中使用了 .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))