Python_笛卡爾積

2021-02-21 Lin王發林

  有這麼一個需求,已經有幾個人問過我了,工作中還是經常遇到,看上去很簡單,但是Excel就是不好解決。是這樣的,有兩個表格(一個是100個商品的商品表格,另一個是300個城市的城市表格),需要把每個城市都對應100個商品的信息,也就是一個城市複製100行,然後把100個商品信息粘貼到後面。於是就需要不斷重複的複製粘貼很多遍,現實中還真有人這樣複製粘貼。畢竟是個問題,所以還是需要解決,找了一下,這個集合有個好聽的名字,叫笛卡爾積。

  笛卡爾乘積是指在數學中,兩個集合X和Y的笛卡爾積,表示為X×Y,第一個對象是X的成員而第二個對象是Y的所有可能有序對的其中一個成員 。假設集合A={a, b},集合B={0, 1, 2},則兩個集合的笛卡爾積為{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

  下面操作一下,後面順便放了一個打包的exe文件,可以拿去直接使用。先把案例數據導進來看看↓

import osimport pandas as pdos.chdir(r"E:\Python\小工具\笛卡爾積")
df1 = pd.read_excel(f"笛卡爾積數據.xlsx",sheet_name=0)df1['sup'] = 1
df2 = pd.read_excel(f"笛卡爾積數據.xlsx",sheet_name=1)df2['sup'] = 1

  可以看到,在一張Excel表裡裡面,讀取了兩個sheet。並且每個sheet裡面都加了一個輔助列。長下面這樣↓

  操作很簡單,就是通多pandas的merge函數(具體介紹,點擊跳轉:Pandas03_數據合併、追加和連接),進行左右一個全連接,然後把輔助列刪了,在保存就完了。

a = pd.merge(df1,df2,how="outer",on='sup')del a['sup']a.to_excel(f"完成.xlsx")

  就這麼簡單,為什麼還要在這裡寫出來了,首先確實還是有用,關鍵是,這裡加了幾行代碼,把這個小功能打包成了一個可執行的exe文件,可以下載來直接用,複製下面這串連結就行了,有點長,不影響,也不要怕,是安全的,放在我自己的阿里雲存儲空間裡面。

https://linss.oss-cn-beijing.aliyuncs.com/Python/exe/%E7%AC%9B%E5%8D%A1%E5%B0%94%E9%9B%86%28Excel%E7%89%88%29v0.001.exe?Expires=1607872954&OSSAccessKeyId=TMP.3KhRrcAUUoxncGSoZExTuq6peJ5CcyRVkiNEsVW1r23js1XQa1o1WbfNKiHQHwe6bWqBrLRpqadKeArYz357LLvjc7NEPB&Signature=%2BrAS8UXeRiUUWa67thsc%2B9N5FIM%3D&versionId=CAEQExiBgMDg5OG.shciIDlhOGEwYzI1YjcyNDRiNmRhZWE2NzFhZWY4ZDk4M2Ux&response-content-type=application%2Foctet-stream

  下載下來,稍微有點大,也很粗糙,不過不影響嘛,電腦不差這點空間,將就能用就行了。長這樣↓

  下面演示一下,看,還有溫馨的三行文字操作說明↓

  好了,就這樣吧,後面如果有需要還可以繼續優化,有需求也可以做點新的小工具來自己用。

相關焦點

  • 笛卡爾積
    多表SQL關聯,相信大家都會寫,但是它背後的原理,你可能並不知道,今天我們來拆解一下多表SQL關聯,如果你已經明白什麼是笛卡爾積,那麼可以略過了
  • 【編程碼拉松】笛卡爾積
    笛卡爾(Decartes) 乘積又叫直積。假設集合A={a,b},集合B={0,1,2}, 則兩個集合的笛卡爾積為{(a, 0), (a,1),(a,2),(b,0), (b,1), (b,2)}。可以擴展到多個集合的情況。類似的例子有,如果A表示某學校學生的集合,B表示該學校所有課程的集合,則A與B的笛卡爾積表示所有可能的選課情況。
  • 【笛卡爾坐標/點積/叉積】圖解高等數學-下 03
    10.1 空間中的笛卡爾(直角)坐標和向量為給空間的點定位, 需要由三條相互垂直的軸. 如下圖所示軸組成右手坐標系空間的點 P 的笛卡爾坐標 (x,y,z) 可用其位置向量表示. 如下圖所示. 笛卡爾坐標也是直角坐標, 因為定義這種坐標的軸以直角相交.
  • Java-笛卡爾積實現變量拆分
    笛卡爾積集定義: 設A和B是兩個集合,存在一個集合,它的元素是用A中元素為第一元素,B中元素為第二元素構成的有序二元數組。稱它為集合A和B的笛卡爾積集,記為A×B。即:A×B={(x,y)|x∈A∧y∈B}例如: 集合A中有1和2兩個元素,為:A={1,2};集合B中有a,b,c 三個元素,為B={a,b,c};那麼笛卡爾積運算的結果數量則為6個。
  • MYSQL8.0 hash join中的笛卡爾積關聯的現象解析
    mysql> select count(*) from t1,t2,t3 where t1_id=t2_id and t2_addr=t3_addr; ++| count(*) |++|      900 |++1 row in set (30.87 sec)這個
  • python入門教程NO.8 用python寫個存款利息計算器
    本文涉及的python基礎語法為def函數,return,函數的各參數示例,匿名函數等函數初識函數是一段組織好的\ 可重複使用的\ 用來實現特定功能的代碼塊。函數的參數關鍵字參數的應用示例必備參數的應用示例默認參數的應用示例不定長參數的應用示例python 使用 lambda 來創建匿名函數lambda只是一個表達式,函數體比def簡單很多。lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
  • 學個資料庫竟然有笛卡爾,不會還有牛頓吧?
    一、笛卡爾積與內連接萬萬沒有想到,學個資料庫竟然還能接觸到笛卡爾積?後面不會學著學著還會出現牛頓吧……牛頓、拉格朗日、泰勒、傅立葉……簡直就是大學噩夢般的存在。現在有兩張表:部門表、成員表。就需要引入笛卡爾積的概念:格式:select * from member,department;查出來的數據就相當於成員表與部門表的乘積。也就是將成員表裡的每一條數據都和部門表中的每一條匹配連接。
  • 隱秘的角落劇情解析:笛卡爾的兩個故事 笛卡爾的愛心函數故事
    《隱秘的角落》笛卡爾的兩個故事《隱秘的角落》中,張東升在少年宮為學生講了笛卡爾和他浪漫的「心形線」。小編想要告訴大家的是,數學家和公主的愛情故事純屬鬼扯,根本就不存於歷史中,最多只能當個魔改的小短文看。
  • 理性主義先驅——笛卡爾
    笛卡爾的著作是針對封建教會和經院哲學的, 因此受到了荷蘭僧侶們的迫害。 他的學說被禁止在荷蘭與法國公開傳播,1633 年他的著作被梵蒂岡教皇列入 」禁書目錄」。他於 1649 年被迫到瑞典,不久就在那裡去世。
  • 笛卡爾:何為心物二元論?
    笛卡爾通過證明上帝的存在和上帝不會欺騙我們,保證了我能夠用理性清楚分明地認識的東西,就必然是真的。有了上帝這個絕對的保證,笛卡爾就可以超出單純思想著的「我」,認識其他東西,由此建立起物質世界的存在性。笛卡爾認為,不可能是顏色、氣味、味道、聲音、硬度、質量這些東西。他用「蜂蠟」作為例子,表明這些屬性都是可以隨著溫度、溼度之類的環境因素變化的,但是一切物體不管顏色、氣味之類的東西如何變化,都必然具有「廣延」這個確定無疑的本質屬性,也就是具有長、寬、高的三維量度。
  • 思想家系列——笛卡爾
    畢業後笛卡爾一直對職業選擇不定,又決心遊歷歐洲各地,專心尋求「世界這本大書」中的智慧。1618年,笛卡爾加入荷蘭拿騷的毛裡茨的軍隊。但是荷蘭和西班牙之間籤訂了停戰協定,於是笛卡爾利用這段空閒時間學習數學。在軍隊服役和週遊歐洲期間他繼續注意「收集各種知識」,「隨處對遇見的種種事物注意思考」。在笛卡爾的時代, 拉丁文是學者的語言。
  • 我思故我在 | 笛卡爾
    在笛卡爾死於瑞典後,克裡斯蒂娜女王放棄了她的王位轉信羅馬天主教(瑞典法律要求統治者是新教教徒)。她一直聯繫的僅有的天主教徒就是笛卡爾,他曾是她的個人家庭教師。笛卡爾的主要數學成果集中在他的「幾何學」中。當時,代數還是一門新興科學,幾何學的思維還在數學家的頭腦中佔有統治地位。在笛卡爾之前,幾何與代數是數學中兩個不同的研究領域。
  • 數學家系列之笛卡爾
    這個函數就是著名的笛卡爾心形函數關於這個函數也有一段浪漫而又悽美的故事笛卡爾,17世紀時出生於法國他對於後人的貢獻相當大他是第一個發現直角坐標系的人到52歲,一直默默無名1650年,貧窮的數學家笛卡爾在斯德哥爾摩的街頭邂逅了美麗的瑞典公主克裡斯汀。
  • 笛卡爾:無知與美德
    在笛卡爾或者他的讀者懷疑自己的所有信念並探求重建它們的基礎時,遵循這種臨時道德是應該的。因為,在此期間,他不得不行動,並因此需要指導。這種臨時道德是以一條懷疑論者的普遍原則開始的:服從你自己國家的法律和習俗。
  • 笛卡爾的二元論|身體;運動
    二元論(Dualism)    在結束有關理智和天賦觀念的討論之後,有的人可能會想,笛卡爾的觀點是否對物理世界有任何解釋。當然是有的。但是在開始討論這個問題之前,我們需要去理解理智(或心靈)與人類身體的關係。笛卡爾區分了兩者,並認為兩者是獨立的實體(entities)。
  • 西方哲學史中的笛卡爾
    《西方哲學史中的笛卡爾》笛卡爾可以說是近代哲學的始祖,在父親死後他繼承了一筆可觀的地產,地產被他賣掉,用錢來投資,每年大概有六千法郎左右的收入,這樣他就不會因為生計而發愁。在聽到了伽利略被秘密判罪的事,笛卡爾搬到了荷蘭,住了二十年,荷蘭在當時是一個有思想自由的國度,在荷蘭最少生命安全可以得到保障,還可以出版他寫的書。笛卡爾一心只想思考,做研究,不想和麻煩靠近,總是能躲就躲。一生寫了好幾本不錯的書,有大家熟悉的《方法論》《沉思錄》等,聽說還寫了一本巨著《宇宙論》當中可能有兩個異端學說,因為怕被迫害,到死也沒有發表。
  • 初中歷史-勒內·笛卡爾
    笛卡爾用形上學觀點進行了一系列創造性的推論,證明出使自己滿意的結果:由於他自己的存在(我思我在),上帝才存在,外部世界才存在,這就是笛卡爾學說的起點。  笛卡爾方法具有雙重意義。  第一,他把「什麼是知識」這個認識論的基本問題置於他的哲學體系的中心。早期的哲學家力圖描寫世界的本質,但是笛卡爾教導我們這樣的問題若不和「我怎麼能知道?」
  • 天津0基礎如何學python培訓?
    就是我們的python程式設計師,python可以用來做很多事情,比如:網絡爬蟲、數據分析等。 隨著網際網路的發展,目前行業內也都緊缺python人員,也有越來越多的小夥伴報名開始學習,那麼0基礎我們該怎麼去學習呢?今天誠築說小編來和大家探討一下。
  • 笛卡爾,解析幾何的奠基人
    的笛卡爾。笛卡爾既是一個數學家又是一個哲學家 。可能科學的盡頭是神學。神學部分又不可避免是哲學。哲學所蘊含的強大邏輯又給無數科學發現提供了強大的推理依據。所以笛卡爾是那個時代的推動者。直到笛卡爾的理論出現,人們發現長方體的對角線是一個一次函數。這是一個多麼了不起的發現,從哪以後擺錘的弧線有了可以解釋的理論依據。人們可以定點推算下一個著彈點在什麼位置。
  • 浪漫的笛卡爾:數學家怎樣表白
    ◆ ◆ ◆小故事笛卡爾,17世紀時出生於法國,他對於後人的貢獻相當大,他是第一個創造發明坐標的人,可惜一生窮困潦倒。一直到52歲,仍然默默無名。當時法國正流行黑死病,笛卡爾不得不逃離法國,於是他流浪到瑞典當乞丐。