首页 > 解决方案 > 按列名将数据框映射到一列笛卡尔积

问题描述

注意:笛卡尔积可能不是正确的语言,因为我们使用的是数据,而不是集合。它更像是“免费产品”或“文字”。

将数据框转换为列表列表的方法不止一种。

这是一种方法

在这种情况下,列表列表实际上表示列列表,其中列表索引是行索引。

我想要做的是获取一个数据框,按名称选择特定列,然后生成一个新列表,其中内部列表是所选列中元素的笛卡尔积。这里给出了一个简化的例子:

import pandas as pd
df = pd.DataFrame([[1,2,3],[3,4,5]])

magicMap(df)

df = [[1,3],[2,4],[3,5]]

使用列名:

df # full of columns with names
magicMap(df, listOfCollumnNames)
df = [[c1r1,c2r1...],[c1r2, c2r2....], [c1r3, c2r3....]...]

注意:“cirj”是第 i 列第 j 行。

有没有一种简单的方法可以做到这一点?

标签: pythonpandas

解决方案


编码

import pandas as pd
df = pd.DataFrame([[1,2,3],[3,4,5]])
df2= df.transpose()

从,df

    0   1   2
0   1   2   3
1   3   4   5

对此,df2

    0   1
0   1   3
1   2   4
2   3   5

看起来像你需要的

df2.values.tolist()

[[1, 3], [2, 4], [3, 5]]

并以您想要使用的方式获取列顺序,df3 = df2.reindex(columns=column_names)其中 column_names 是您想要的顺序,


推荐阅读