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