pandas中的笛卡尔积(交叉连接)-大数据集

mec1mxoz  于 2023-04-04  发布在  其他
关注(0)|答案(1)|浏览(174)

我在我的特定数据框架案例中找不到答案。想在Python中的大型数据集上使用笛卡尔积(交叉连接)。我发现了许多相关的帖子,如:使用pandas的性能笛卡尔积(CROSS JOIN),但我不能轻松地应用这些,因为我有索引,我不能轻松地将数据集切片到单个列,然后合并。

我的数据:其中年(2021-2022)和天(1D,2D,3D)是索引。
我的目标:是创建“新”索引的笛卡尔积,我现在不能轻易地抓住。新索引是:年,日,名。
解决方案如下:data3 = d1.merge(d2, how="cross")不工作,因为year索引被删除,并且创建了太多列,而没有将days分配为一列。

z9smfwbn

z9smfwbn1#

根据您的图像,您可以:

out = (df.rename_axis(index='Dates', columns='Days').stack()
         .rename('Names').reset_index())
print(out)

# Output
   Dates Days   Names
0   2021   1D     Bob
1   2021   2D   Alice
2   2021   3D     Tom
3   2022   1D   Georg
4   2022   2D  Elvira
5   2022   3D     Zoe

最小可重现性示例:

data = {'1D': {2021: 'Bob', 2022: 'Georg'},
        '2D': {2021: 'Alice', 2022: 'Elvira'},
        '3D': {2021: 'Tom', 2022: 'Zoe'}}
df = pd.DataFrame(data)
print(df)

# Output
         1D      2D   3D
2021    Bob   Alice  Tom
2022  Georg  Elvira  Zoe

相关问题