python - 从嵌套列表构造 pandas 数据框

标签 python pandas dataframe nested-lists

我有一个像这样的嵌套列表

a=[ [[12,23],[31,41]], [[53,68],[77,87]] ]

我想创建一个像这样的 pandas 数据框

id1  id2   c2   c3
1     1    12   31
1     2    53   77
2     1    23   41
2     2    68   87

我的想法是这样做:

ids = {'id1':[1,1,2,2],'id2':[1,2,1,2]}
df1 = pd.DataFrame(ids)
L = [[t[idx] for t in l] for idx in [0,1] for l in a]
df2 = pd.DataFrame(L, columns=['c1','c2'])
pd.concat([df1,df2], axis=1)

有没有办法不用那么多命令就能达到相同的结果?

最佳答案

from itertools import product

# generate id1 and id2 using `itertools.product`
v = np.arange(len(a))    
i = pd.DataFrame(np.array(list(product(v, v))) + 1)
# concatenate `a` along the 0th axis
j = pd.DataFrame(np.concatenate(a, axis=0))

# concatenate `i` and `j`
df = pd.concat([i, j], axis=1)
# set the column names
df.columns = ['id1', 'id2', 'c2', 'c3']

   id1  id2  c2  c3
0    1    1  12  23
1    1    2  31  41
2    2    1  53  68
3    2    2  77  87

关于python - 从嵌套列表构造 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49438021/

相关文章:

python - 带有来自 Pandas DataFrame 的数据的 Spacy NLP

python - 这个创建和读取 mysql 记录的脚本不会运行

python - s3.upload_fileobj 给出错误需要类似字节的对象

python - 汇总 DataFrame 中的非唯一行

dataframe - pyspark获取一行中每一列的最新非空元素

r - dplyr::full_join 未按预期工作

python - 如何从用户输入的 float 中删除一组字符 - Python

python - 解码错误 : For input string: ""

python - Pandas:如何根据 ID 列表增加列的单元格值

python - 基于三列的重复项