将嵌套列表转换为Pandas数据框

时间:2019-09-15 00:18:29

标签: python pandas list dataframe nested

尝试将python列表转换为熊猫数据框:

input:
list = [[a,x,[1,2]],[a,y,[1]],[a,z,[1,2,3]],[b,v,[1]],[b,w,[1,2]]...]

一些转换技巧导致:

output:
c1 c2 c3
 a  x  1
 a  x  2
 a  y  1
 a  z  1
 a  z  2
 a  z  3
 b  v  1
 b  w  1
 b  w  2

每个列表元素的第一个和第二个元素始终是单个值(分别变为c1和c2),但是第三个元素是长度可变的列表。我尝试了各种循环将其转换为列表,每个元素都准备好作为“行”,但我无法使其工作。它有点像一个反向枢轴表,但这也并没有真正帮助我。感谢您的帮助

1 个答案:

答案 0 :(得分:0)

enter code here
import pandas as pd
import numpy as np

df = pd.DataFrame([['a','x',[1,2]],['a','y',[1]],['a','z',[1,2,3]],['b','v',[1]],['b','w',[1,2]]],columns=["colum1","column2","column3"])

print(df)

print("******************")




lst_col = 'column3'

r = pd.DataFrame({
  col:np.repeat(df[col].values, df[lst_col].str.len())
  for col in df.columns.drop(lst_col)}
).assign(**{lst_col:np.concatenate(df[lst_col].values)})[df.columns]
print(r)

enter image description here