慕碼人8056858
2019-06-21 13:08:22
大熊貓笛卡爾產(chǎn)品我有兩只熊貓的資料:from pandas import DataFramedf1 = DataFrame({'col1':[1,2],'col2':[3,4]})df2 = DataFrame({'col3':[5,6]})獲得他們笛卡爾產(chǎn)品的最佳實踐是什么(當(dāng)然,沒有像我一樣明確地寫它)?#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條經(jīng)驗 獲得超4個贊
pd.MultiIndex.from_product
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

慕運維8079593
TA貢獻1876條經(jīng)驗 獲得超5個贊
這將不會贏得一個代碼高爾夫比賽,并借鑒了前面的答案-但清楚地顯示了關(guān)鍵是如何添加,以及如何加入工作。這將從列表中創(chuàng)建2個新的數(shù)據(jù)幀,然后添加執(zhí)行笛卡兒產(chǎn)品的鍵。
我的用例是,我需要列表中每周的所有存儲ID。所以,我創(chuàng)建了我想要的所有周的列表,然后是我想要映射它們的所有商店ID的列表。
我選擇左的合并,但在這個設(shè)置中語義與內(nèi)部相同。如果鍵組合在兩個表中出現(xiàn)不止一次,它就會執(zhí)行笛卡爾積-這就是我們所設(shè)置的。
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)
添加回答
舉報
0/150
提交
取消