将带有元组的列表列表转换为数据框?

Converting list of lists with tuple into data frame?

我有以下嵌套列表:

 lst = [[1, 1, 10], 
        [1, 2, 28.6], 
        [1, 3, 26.93], 
        [1, 4, 20],
        [2, 1, 6],
        [2, 2, 4],
        [2, 3, 6],
        [2, 4, 23],
        [3, 1, 12], 
        [3, 2, 23], 
        [3, 3, 13],
        [3, 4, 43]]

第一项和第二项分别指向 x 和 y,第三项是该特定单元格的值。所以我需要将这个列表转换成一个数据框,其中第一项应该是列,第二项应该是索引,最后第三项应该是该列的值。鉴于上面的例子,我想要的结果应该是这样的:

mydata_frame:
              1       2     3    
           1  10      6     12
           2  28.6    4     23
           3  26.93   6     13
           4  20      23    43
           

试试 pandas:

import pandas as pd
df = pd.DataFrame(lst)
df = df.pivot_table(2, 1, 0)
df.columns = sorted(set(list(zip(*lst))[0]))
df.index.name = None
print(df)

另一个解决方案 - 首先从 lst 创建一个包含多级列的数据框,然后使用 .stack 将其塑造成最终形式:

df = (
    pd.DataFrame({(x, y): z for x, y, z in lst}, index=[0])
    .stack(level=1)
    .droplevel(0)
)
print(df)

打印:

       1   2   3
1  10.00   6  12
2  28.60   4  23
3  26.93   6  13
4  20.00  23  43

使用pandas.DataFrame.pivotrename_axis:

df = pd.DataFrame(lst).pivot(index=1, columns=0, values=2)
df = df.rename_axis(index=None, columns=None)
print(df)

输出:

       1     2     3
1  10.00   6.0  12.0
2  28.60   4.0  23.0
3  26.93   6.0  13.0
4  20.00  23.0  43.0