将带有元组的列表列表转换为数据框?
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.pivot
和rename_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
我有以下嵌套列表:
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.pivot
和rename_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