首页 > 解决方案 > Python Pandas:将具有不同长度的列表作为一行分配给熊猫数据框

问题描述

嗨,我有一个这样的数据框:

 ColA  ColB  
 a      0     
 b      1
 c      2     

我想将 list_a = [ 0,1 ] 附加到 A == a 列并将 list_c = [ 0, 1, 2 ] 附加到 A == c 列。最终应该是这样的:

 ColA  ColB  
 a      0     0     1    Nan
 b      1     Nan   Nan  Nan
 c      2     0     1     2 

我怎样才能做到这一点?谢谢你。

标签: pythonpandas

解决方案


您可以将您的构建lists成 aDataFrameconcat它们:

(pd.concat([df.set_index('ColA'),
            pd.DataFrame([list_a, list_c], index=['a', 'c'])],
           axis=1).rename_axis('ColA').reset_index())

[出去]

  ColA  ColB    0    1    2
0    a     0  0.0  1.0  NaN
1    b     1  NaN  NaN  NaN
2    c     2  0.0  1.0  2.0

或者按照@QuangHoang 的建议,使用DataFrame.merge

df.merge(pd.DataFrame([list_a, list_c], index=['a', 'c']),
         left_on='ColA',
         right_index=True,
         how='left')

推荐阅读