一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

 列黃者馬克 2021-08-31

介紹

在本文中,我們將討論借助pandas方法組合數(shù)據(jù)框的方法。有時,當我們在進行一個大型項目并且數(shù)據(jù)來自不同的來源時,我們需要將這些數(shù)據(jù)合并為一個數(shù)據(jù)幀。

pandas中很少有數(shù)據(jù)科學人員用來使數(shù)據(jù)框架更有價值的方法。

這些方法按行和列相加進行劃分。

方法merge()join()使用SQL連接方法方法基于公共鍵和索引工作。

該方法的concat()正在數(shù)據(jù)幀將它們結合起來,使一個導致數(shù)據(jù)幀。

你可以轉到有關每個需求的系列和數(shù)據(jù)框架的基本文章。

串聯(lián)方法

將兩個數(shù)據(jù)幀組合成一個水平方向。

python示例:

import pandas as pd

為了組合數(shù)據(jù)幀,我們至少需要兩個數(shù)據(jù)幀。

#數(shù)據(jù)幀1
df1 = pd.DataFrame({"C1":["1", "2"], 
                    "C2":["3", "4"],}, 
                   index=[0, 1])
#數(shù)據(jù)幀2
df2 = pd.DataFrame({"C1":["5", "6"], 
                    "C2":["7", "8"],}, 
                   index=[2, 3])
#結合這兩個數(shù)據(jù)幀
data = [df1,df2]
combined_df = pd.concat(data)combined_df
這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

我們知道,當我們水平組合兩個數(shù)據(jù)幀時,列是相同的,并且索引正在增加。

級聯(lián)的論點

  1. Keys參數(shù):它采用序列或不采用序列,并且將密鑰作為層次結構索引傳遞到最外層,如下所示:
key_data = pd.concat(data, keys=["x", "y"])
key_data

現(xiàn)在,我們也可以使用鍵訪問數(shù)據(jù),如示例所示。

key_data.loc["y"]
這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

2. Axis:此參數(shù)用于垂直組合數(shù)據(jù)框架,這意味著要添加更多列,如以下示例所示:

df3 = pd.DataFrame({"C3":["10", "11"], 
                    "C4":["12", "13"],}, 
                   index=[1,2])

在這里,我們給出索引(1,2),但在“ df1”數(shù)據(jù)幀中,索引為(0,1)。因此,結果將得到一個新行,缺失值填充為“ nan ”。

axis_data = pd.concat([df1, df3], axis=1)
axis_data
這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

3.聯(lián)接:此參數(shù)有兩種聯(lián)接類型,即外部聯(lián)接和內部聯(lián)接。默認聯(lián)接是外部聯(lián)接,而內部聯(lián)接將給出數(shù)據(jù)幀的公共交集,如下所示:

join_data = pd.concat([df1, df3], axis=1, join="inner")
join_data

結合數(shù)據(jù)框和系列

這是組合序列和數(shù)據(jù)框的非常有用的方法,如下所示:

series_data = pd.Series(["21", "22"], name="C5")
combine_series = pd.concat([df1, series_data], axis=1)
combine_series
這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

合并方式

與結構化查詢語言(SQL)中的關系數(shù)據(jù)庫相同,此方法用于連接不同的數(shù)據(jù)幀。

單鍵數(shù)據(jù)幀示例。

on ”參數(shù)用于從兩個數(shù)據(jù)幀中獲取公共列。

left = pd.DataFrame({"keys":["K0", "K1"],
                     "C1":["1", "2"], 
                     "C2":["3", "4"],})
right = pd.DataFrame({"keys":["K0", "K1"],
                      "C3":["10", "11"], 
                      "C4":["12", "13"]})
basic_join = pd.merge(left, right, on="keys")
basic_join
這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

具有兩個關鍵數(shù)據(jù)幀的示例。

left = pd.DataFrame({"k1": ["A0", "A0", "A1", "A2"],
                     "k2": ["A0", "A1", "A0", "A1"],
                     "A": ["1", "2", "3", "4"],
                     "B": ["5", "6", "7", "8"]})
right = pd.DataFrame({"k1": ["A0", "A1", "A1", "A2"],
                      "k2": ["A0", "A0", "A0", "A0"],
                      "C": ["9", "10", "11", "12"],
                      "D": ["13", "14", "15", "16"]})
two_key_result = pd.merge(left, right, on=["k1", "k2"])
two_key_result
這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

SQL do連接,例如左連接,右連接,內部連接和外部連接。這些示例如下所示:

left_result = pd.merge(left, right, how="left", on=["k1", "k2"])
right_result = pd.merge(left, right, how="right", on=["k1", "k2"])
inner_result = pd.merge(left, right, how="inner", on=["k1", "k2"])
outer_result = pd.merge(left, right, how="outer", on=["k1", "k2"])
這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

merge方法包含一個參數(shù),該參數(shù)在結果數(shù)據(jù)幀中添加帶有信息的分類列,如以下示例所示。

data1 = pd.DataFrame({"C1": [4, 6], "col_left": ["a", "b"]})
data2 = pd.DataFrame({"C1": [6, 3, 3], "col_right": [3, 3, 3]})
#The indicator argument is "True"
pd.merge(data1, data2, on="C1", how="outer", indicator=True)
這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

該方法對于基于左和右數(shù)據(jù)幀組合兩個數(shù)據(jù)幀也很有用。

在此示例中,左側數(shù)據(jù)比右側數(shù)據(jù)占主導地位,如下所示:

left = pd.DataFrame({"X1":["1", "2"], 
                     "X2":["3", "4"]}, 
                     index = ["K0", "K1"])
right = pd.DataFrame({"X3":["10", "11"], 
                     "X4":["12", "13"]}, 
                     index = ["K0", "K2"])
result = left.join(right)
result
這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

在下面的示例中,權限是主要的。

result1 = right.join(left)
result1
這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

我們還可以基于鍵和索引連接兩個數(shù)據(jù)幀,如下所示:

left = pd.DataFrame({"k1": ["A0", "A1", "A0", "A1"],                     
                     "C1": ["1", "2", "3", "4"],
                     "C2": ["5", "6", "7", "8"]})
right = pd.DataFrame({"C3": ["10", "11"], "C4": ["12", "13"]}, index=["A0", "K1"])
result = left.join(right, on="k1")
result
這次終于一次性把merge()、join()、concat()的區(qū)別講清楚了

結論:

本文給出了基于索引,鍵組合數(shù)據(jù)幀的基本思想。數(shù)據(jù)框的組合還適用于將在以后的文章中介紹的多個鍵和索引。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产美女精品午夜福利视频| 国产一区二区三区四区免费| 亚洲天堂精品在线视频| 中日韩美女黄色一级片| 风韵人妻丰满熟妇老熟女av| 亚洲一区二区三区日韩91| 国产一区二区精品丝袜| 东京干男人都知道的天堂| 亚洲欧美日韩国产综合在线| 国产日韩欧美专区一区| 91欧美视频在线观看免费| 国产成人av在线免播放观看av| 日韩一区二区三区免费av| 国产精品熟女在线视频| 大香蕉久久精品一区二区字幕 | 欧美一区二区三区十区| 出差被公高潮久久中文字幕| 国产精品国三级国产专不卡| 亚洲黄色在线观看免费高清| 激情丁香激情五月婷婷| 情一色一区二区三区四| 亚洲综合天堂一二三区| 国产免费操美女逼视频| 狠狠亚洲丁香综合久久| 国产日产欧美精品大秀| 在线观看国产午夜福利| 国产又黄又爽又粗视频在线| 亚洲美女国产精品久久| 精品国产亚洲av久一区二区三区 | 亚洲中文字幕视频一区二区| 天堂网中文字幕在线观看| 日本午夜乱色视频在线观看| 精品国产亚洲区久久露脸| 欧美精品久久男人的天堂| 欧美精品女同一区二区| 老司机精品一区二区三区| 国产精品免费无遮挡不卡视频| 高潮日韩福利在线观看| 精品日韩欧美一区久久| 肥白女人日韩中文视频| 欧美av人人妻av人人爽蜜桃|