为了账号安全,请及时绑定邮箱和手机立即绑定

大熊猫笛卡尔产品

大熊猫笛卡尔产品

慕码人8056858 2019-06-21 13:08:22
大熊猫笛卡尔产品我有两只熊猫的资料:from pandas import DataFramedf1 = DataFrame({'col1':[1,2],'col2':[3,4]})df2 = DataFrame({'col3':[5,6]})获得他们笛卡尔产品的最佳实践是什么(当然,没有像我一样明确地写它)?#df1, df2 cartesian productdf_cartesian = DataFrame({'col1':[1,2,1,2],'col2':[3,4,3,4],'col3':[5,5,6,6]})
查看完整描述

3 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

使用pd.MultiIndex.from_product作为否则为空的dataframe中的索引,然后重置它的索引,您就完成了。

a = [1, 2, 3]b = ["a", "b", "c"]index = pd.MultiIndex.from_product([a, b], names = ["a", "b"])pd.DataFrame(index = index).reset_index()

退出:

   a  b

0  1  a

1  1  b

2  1  c

3  2  a

4  2  b

5  2  c

6  3  a

7  3  b

8  3  c


查看完整回答
反对 回复 2019-06-21
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

这将不会赢得一个代码高尔夫比赛,并借鉴了前面的答案-但清楚地显示了关键是如何添加,以及如何加入工作。这将从列表中创建2个新的数据帧,然后添加执行笛卡儿产品的键。

我的用例是,我需要列表中每周的所有存储ID。所以,我创建了我想要的所有周的列表,然后是我想要映射它们的所有商店ID的列表。

我选择左的合并,但在这个设置中语义与内部相同。如果键组合在两个表中出现不止一次,它就会执行笛卡尔积-这就是我们所设置的。

days = pd.DataFrame({'date':list_of_days})stores = pd.DataFrame({'store_id':list_of_stores})stores['key'] 
= 0days['key'] = 0days_and_stores = days.merge(stores, how='left', on = 'key')days_and_stores.drop('key',1, inplace=True)


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 455 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信