Python 将具有不同长度的列表列表的dataframe列复制到不同的列

Python 将具有不同长度的列表列表的dataframe列复制到不同的列,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: df=pd.DataFrame({'column':[[a',0],[b',1]],[b',2]],[c',1],[b',2]]}) df 我不知道有哪些字母,每行的列表数量也不一样。我的目标是让它看起来像这样: a b c 0 0 1 NaN 1 NaN 2 NaN 2 NaN 2 1 可以使用以下方法执行第一步: df['column'].apply(pd.系列) 但是,这个问题的很大一部分仍然存在。

我有以下数据帧:

df=pd.DataFrame({'column':[[a',0],[b',1]],[b',2]],[c',1],[b',2]]})
df
我不知道有哪些字母,每行的列表数量也不一样。我的目标是让它看起来像这样:

     a    b    c
0    0    1    NaN
1    NaN  2    NaN
2    NaN  2    1
可以使用以下方法执行第一步:

df['column'].apply(pd.系列)

但是,这个问题的很大一部分仍然存在。

如果您使用的是Pandas 0.25+,您可以使用
explode

s  = df['column'].explode()
(pd.DataFrame(list(s.values), index=s.index)
   .set_index(0, append=True)[1]
   .unstack()
)
输出:

0    a    b    c
0  0.0  1.0  NaN
1  NaN  2.0  NaN
2  NaN  2.0  1.0
试试这个

df_final = pd.DataFrame(dict(l) for l in df.column)

Out[129]:
     a  b    c
0  0.0  1  NaN
1  NaN  2  NaN
2  NaN  2  1.0

非常优雅。一个字符稍少的替代方案:
pd.DataFrame(map(dict,df.column))
太棒了!我现在发现,在我的数据中,列表实际上是[value,key],而不是我描述的[key,value],你有解决方案吗?谢谢@rafaelc。是的,
map
更简洁。我选择genex/listcomp是因为我喜欢它们:)@ThomasW:你的意思是你的数据是
[[0,a],[1,b]
?@ThomasW:只需在内部执行dict comp,而不是直接调用
dict
pd.DataFrame({y:x代表x,y在l}代表df.column中的l)
谢谢你提供的有用方法,我选择了Andy l.的方法,因为它更简洁!
0    a    b    c
0  0.0  1.0  NaN
1  NaN  2.0  NaN
2  NaN  2.0  1.0
df_final = pd.DataFrame(dict(l) for l in df.column)

Out[129]:
     a  b    c
0  0.0  1  NaN
1  NaN  2  NaN
2  NaN  2  1.0