python - 如何以笛卡尔积的形式为现有数据框设置索引?

标签 python list pandas

我有一个 list 。我想以列表值与数据帧的笛卡尔积的形式设置数据帧的索引,即

li = ['A','B']
df = pd.DataFrame([[0,0,0],[1,1,1],[2,2,2]])

我希望生成的数据框类似于

   0  1  2
A  0  0  0
A  1  1  1
A  2  2  2
B  0  0  0
B  1  1  1
B  2  2  2

我该怎么做? ​

最佳答案

选项 1
pd.concatkeys 参数

pd.concat([df] * len(li), keys=li) 

     0  1  2
A 0  0  0  0
  1  1  1  1
  2  2  2  2
B 0  0  0  0
  1  1  1  1
  2  2  2  2

要准确复制您的输出:

pd.concat([df] * len(li), keys=li).reset_index(1, drop=True)

   0  1  2
A  0  0  0
A  1  1  1
A  2  2  2
B  0  0  0
B  1  1  1
B  2  2  2

选项 2
np.tilenp.repeat

pd.DataFrame(np.tile(df, [len(li), 1]), np.repeat(li, len(df)), df.columns)

   0  1  2
A  0  0  0
A  1  1  1
A  2  2  2
B  0  0  0
B  1  1  1
B  2  2  2

关于python - 如何以笛卡尔积的形式为现有数据框设置索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45922932/

相关文章:

python - 使用 pysnmp 获取单个 SNMP 值

c - 多线程访问数据结构

python-2.7 - 属性错误 : 'module' object has no attribute 'version'

python - 将多列合并为一列,删除重复项

python - 如何确保 Celery 任务是防止重叠的 Celery 任务执行

python - 将值范围映射到字符串

python - 字符串打印错误

file - F# 将列表输出到文件

python - 从列表python的单个列表中删除子列表

python - Pandas 中最简单的分组/求和