![](/img/trans.png)
[英]Merging Dataframe1 rows into Dataframe2 using existing column headers - Python Pandas
[英]Merging Pandas DataFrames; Inserting DataFrame2's rows into variable DataFrame1's rows/columns
這是我在這里嘗試做的一個有點混亂/具有挑戰性的合並,我還沒有找到適用於這種情況的 StackOverflow 問題,所以這里是:
DataFrame1 是我的“最終目標”的格式(所以我最終想將 DataFrame2 中的數據粘貼到 DataFrame1 中),看起來像下面這樣:
輪廓: | 姓名: | 公司名稱1: | 職稱1: | 工作總結1: | 公司名稱2: | 職稱2: | 工作總結2: | 公司名稱3: | 職稱3: | 工作總結3: |
---|---|---|---|---|---|---|---|---|---|---|
個人資料_0 | 約翰·多伊 | |||||||||
Profile_1 | 簡·史密斯 | |||||||||
Profile_2 | 瑪麗·羅 | |||||||||
Profile_3 | 喬什莫 |
請注意,上面 DataFrame1 中填充的唯一列是 Profile 和 Name。
DataFrame2如下:
輪廓: | 姓名: | 工作 #: | 公司名稱: | 職稱: | 工作總結: |
---|---|---|---|---|---|
個人資料_0 | 約翰·多伊 | 1 | A公司 | 容量 | 總結一 |
個人資料_0 | 約翰·多伊 | 2 | B公司 | 容量 b | 摘要 b |
個人資料_0 | 約翰·多伊 | 3 | 公司 C | 容量 c | 總結 c |
Profile_1 | 簡·史密斯 | 1 | 公司 X | 容量 x | 總結 x |
Profile_1 | 簡·史密斯 | 2 | Y公司 | 容量y | 總結 y |
Profile_1 | 簡·史密斯 | 3 | Z公司 | 容量z | 總結 z |
Profile_2 | 瑪麗·羅 | 1 | 公司 P | 容量 p | 總結 p |
Profile_2 | 瑪麗·羅 | 2 | 公司 Q | 容量q | 總結q |
這就是我卡住的地方。 通過一些 Pandas 魔術,我試圖得出以下結論:
輪廓: | 姓名: | 公司名稱1: | 職稱1: | 工作總結1: | 公司名稱2: | 職稱2: | 工作總結2: | 公司名稱3: | 職稱3: | 工作總結3: |
---|---|---|---|---|---|---|---|---|---|---|
個人資料_0 | 約翰·多伊 | A公司 | 容量 | 總結一 | B公司 | 容量 b | 摘要 b | 公司 C | 容量 c | 總結 c |
Profile_1 | 簡·史密斯 | 公司 X | 容量 x | 總結 x | Y公司 | 容量y | 總結 y | Z公司 | 容量z | 總結 z |
Profile_2 | 瑪麗·羅 | 公司 P | 容量 p | 總結 p | 公司 Q | 容量q | 總結q | |||
Profile_3 | 喬什莫 |
有誰知道如何在 Pandas 中進行這樣的合並/加入? 任何幫助將不勝感激:。)感謝您的閱讀。
戰略
set_index()
和 unstack( unstack()
重塑df = pd.read_csv(io.StringIO("""Profile: Name: Job #: CompanyName: JobTitle: JobSummary:
Profile_0 John Doe 1 Firm A Capacity a Summary a
Profile_0 John Doe 2 Firm B Capacity b Summary b
Profile_0 John Doe 3 Firm C Capacity c Summary c
Profile_1 Jane Smith 1 Firm X Capacity x Summary x
Profile_1 Jane Smith 2 Firm Y Capacity y Summary y
Profile_1 Jane Smith 3 Firm Z Capacity z Summary z
Profile_2 Mary Roe 1 Firm P Capacity p Summary p
Profile_2 Mary Roe 2 Firm Q Capacity q Summary q"""), sep="\t")
# change from long to wide
df = df.set_index(["Profile:","Name:","Job #:"]).unstack()
# rebuild df with values and columns from multi-index
df = pd.DataFrame(df.reset_index().values, columns=["Profile:","Name:"]+ [f"{c[0][:-1]}{c[1]}:" for c in df.columns])
Profile: Name: CompanyName1: CompanyName2: CompanyName3: JobTitle1: JobTitle2: JobTitle3: JobSummary1: JobSummary2: JobSummary3:
0 Profile_0 John Doe Firm A Firm B Firm C Capacity a Capacity b Capacity c Summary a Summary b Summary c
1 Profile_1 Jane Smith Firm X Firm Y Firm Z Capacity x Capacity y Capacity z Summary x Summary y Summary z
2 Profile_2 Mary Roe Firm P Firm Q NaN Capacity p Capacity q NaN Summary p Summary q NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.