我有兩個資料框看起來像這樣(真實的更大):
DF1:
| Alliances_names | 值1 |
|---|---|
| cgc inc/nshow ltd/noracle inc | 500 |
| steam/nsoap 合資公司 | NaN |
| 圣徒BD | 8 |
| watrloo jv/ncgc inc/nflow inc | 19 |
DF2:
| 公司 | 1號 | 2號 |
|---|---|---|
| 蒸汽 | 15 | 是 |
| 肥皂劇 | 2000年 | n |
| CG公司 | 4565 | n |
| 顯示有限公司 | 1 | n |
| 流量公司 | 1111 | 是 |
| 滑鐵盧合資公司 | 6756 | n |
我必須將這兩個資料框與聯盟和公司列合并。如果是聯盟公司,我必須將此資訊添加到行中。(DF1中公司之間有/n分隔符)
結果應該是這樣的:
| Alliances_names | 值1 | 公司 | 1號 | 2號 |
|---|---|---|---|---|
| cgc 公司/nshowltd/noracle 公司 | 500 | CG公司 | 4565 | n |
| cgc 公司/nshowltd/noracle 公司 | 500 | 顯示有限公司 | 1 | n |
| steam/nsoap 合資公司 | NaN | 蒸汽 | 15 | 是 |
| steam/nsoap 合資公司 | NaN | 肥皂劇 | 2000年 | n |
| 圣徒BD | 8 | NaN | NaN | NaN |
| watrloo jv/ncgc inc/nflow inc | 19 | 滑鐵盧合資公司 | 6756 | n |
| watrloo jv/ncgc inc/nflow inc | 19 | CG公司 | 4565 | n |
| watrloo jv/ncgc inc/nflow inc | 19 | 流量公司 | 1111 | 是 |
我需要為每個公司復制聯盟名稱。我嘗試將“聯盟名稱”中的公司分開,并在每個單元格中制作另一列包含公司串列的列,但“isin”不適用于它,我無法將重復資料框合并。在此先感謝您的幫助!
uj5u.com熱心網友回復:
- 使用
split和使用各個公司名稱創建一個單獨的列(稱為“公司”)explode。 merge“公司”列上的兩個資料幀。
df1["Company"] = df1["Alliances_names"].str.split("/n")
df1 = df1.explode("Company")
output = df1.merge(df2, on="Company", how="left")
>>> output
Alliances_names Value1 Company Number1 Number2
0 cgc inc/nshow ltd/noracle inc 500.0 cgc inc 4565.0 n
1 cgc inc/nshow ltd/noracle inc 500.0 show ltd 1.0 n
2 cgc inc/nshow ltd/noracle inc 500.0 oracle inc NaN NaN
3 steam/nsoap jv NaN steam 15.0 y
4 steam/nsoap jv NaN soap jv 2000.0 n
5 saints bd 8.0 saints bd NaN NaN
6 watrloo jv/ncgc inc/nflow inc 19.0 watrloo jv 6756.0 n
7 watrloo jv/ncgc inc/nflow inc 19.0 cgc inc 4565.0 n
8 watrloo jv/ncgc inc/nflow inc 19.0 flow inc 1111.0 y
編輯:
要僅保留所有 Alliances_names 所在的行df2,您可以執行以下操作:
output = output[output["Alliances_names"].str.split("/n").map(set(df2["Company"]).issuperset)]
>>> output
Alliances_names Value1 Company Number1 Number2
3 steam/nsoap jv NaN steam 15.0 y
4 steam/nsoap jv NaN soap jv 2000.0 n
6 watrloo jv/ncgc inc/nflow inc 19.0 watrloo jv 6756.0 n
7 watrloo jv/ncgc inc/nflow inc 19.0 cgc inc 4565.0 n
8 watrloo jv/ncgc inc/nflow inc 19.0 flow inc 1111.0 y
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/325901.html
上一篇:如何在新列中分隔列
