Python 有没有办法在数据帧中取消嵌套列表列?
我有一个数据框,其中一列是列表。我想把这个列表扩展成4列Python 有没有办法在数据帧中取消嵌套列表列?,python,pandas,Python,Pandas,我有一个数据框,其中一列是列表。我想把这个列表扩展成4列 df=pd.DataFrame({'A':[1,2],'B':[[1,2,3,4],[1,2,5,8]]}) df Out[458]: A B 0 1 [1, 2, 3, 4] 1 2 [1, 2, 5, 8] 我希望这是: A C_1 C_2 C_3 C_4 0 1 1 2 3 4 1 2 1 2 5 8 如果所有列表的长度相同,则可以执行以下操作: df[['A
df=pd.DataFrame({'A':[1,2],'B':[[1,2,3,4],[1,2,5,8]]})
df
Out[458]:
A B
0 1 [1, 2, 3, 4]
1 2 [1, 2, 5, 8]
我希望这是:
A C_1 C_2 C_3 C_4
0 1 1 2 3 4
1 2 1 2 5 8
如果所有列表的长度相同,则可以执行以下操作:
df[['A']].join(pd.DataFrame(df['B'].values.tolist(),
index=df.index)
.add_prefix('C_')
)
输出:
A C_0 C_1
0 1 1 2
1 2 1 2
您还可以使用字符串方法来提取数据,假设列
B
中的每一行的长度相同:
mapping ={f"C_{num+1}" : df.B.str[num]
for num in range(df.B.str.len()[0])
}
df.drop(columns="B").assign(**mapping)
A C_1 C_2 C_3 C_4
0 1 1 2 3 4
1 2 1 2 5 8