pandas數(shù)據(jù)合并之a(chǎn)ppend與concat

pandas的數(shù)據(jù)合并與重塑有很多種方法拖云,包括直接復(fù)制列,concat,append咖为,merge和join我衬,本文將重點(diǎn)討論前面三種最簡(jiǎn)單而又最常用的方法。merge和join有空再更哈?。

一. 直接復(fù)制列

可以將新的數(shù)據(jù)列利用 [] 直接賦值給原始數(shù)據(jù)难礼,但是要求新的列名不能和原始數(shù)據(jù)中的列名重名景醇,否則會(huì)覆蓋原始數(shù)據(jù)中的列获搏。
具體來(lái)看:


可以看到新的數(shù)據(jù)塊被直接貼在了原數(shù)據(jù)列的后面,是不是很簡(jiǎn)單,嗯但是這個(gè)方法有很多局限性,比如:

  • 只能按列合并,不能按行合并操作刀荒。
  • 只能給原數(shù)據(jù)中存在的index添加新列姨拥,不會(huì)給原數(shù)據(jù)添加新行(index)。這種合并方法是以原始數(shù)據(jù)index為基準(zhǔn)的详炬,也就是說(shuō)盐类,新老數(shù)據(jù)的交集行會(huì)被直接保留,老數(shù)據(jù)有的而新數(shù)據(jù)沒(méi)有的索引行將會(huì)補(bǔ)nan值呛谜,新數(shù)據(jù)有的而老數(shù)據(jù)沒(méi)有的索引行在跳,將會(huì)被舍棄∩肼剩可以看到硬毕,例子中index=3的行就被舍棄了,而index=0的行被設(shè)為了nan礼仗。

二. append

前面已經(jīng)有了合并列的方法吐咳,那么pandas不會(huì)這么坑爹逻悠,不能合并行吧!韭脊!當(dāng)然不會(huì)童谒,append就是干這個(gè)事情的,它專(zhuān)門(mén)用來(lái)在表尾添加新行...
熟悉Python的大佬們看到append這個(gè)詞就應(yīng)該有感覺(jué)了,沒(méi)錯(cuò)沪羔,它就是添加新元素的方法饥伊。Seris,DataFrame蔫饰,Index都有這個(gè)方法琅豆,我們可以利用這個(gè)添加新元素的方法,來(lái)對(duì)數(shù)據(jù)進(jìn)行縱向合并篓吁。
官方文檔中是這樣描述append的用途的“在表尾中添加新行茫因,并且返回添加后的數(shù)據(jù)對(duì)象,如果添加的行中存在原數(shù)據(jù)中沒(méi)有的列杖剪,那么將給原數(shù)據(jù)添加一個(gè)新列冻押,并用nan補(bǔ)值∈⒑伲”
DataFrame.append(*other*, *ignore_index=False*, *verify_integrity=False*, *sort=None*)

  • other: 是要添加的數(shù)據(jù)洛巢,append很不挑食,這個(gè)other可以是dataframe次兆,dict稿茉,Seris,list等等类垦。
  • ignore_index: 參數(shù)為T(mén)rue時(shí)將在數(shù)據(jù)合并后狈邑,按照0,1蚤认,2米苹,3....的順序重新設(shè)置索引,忽略了舊索引砰琢。
  • verify_integrity:參數(shù)為T(mén)rue時(shí)蘸嘶,如果合并的數(shù)據(jù)與原數(shù)據(jù)包含索引相同的行,將報(bào)錯(cuò)陪汽。

我們來(lái)看個(gè)栗子:


三. concat

concat函數(shù)是在pandas命名空間下的方法训唱,所以通過(guò)pd.concat()的方式來(lái)引用,它可以將數(shù)據(jù)根據(jù)不同的軸作做融合挚冤。concat 與其說(shuō)是連接况增,更準(zhǔn)確的說(shuō)是拼接。就是把兩個(gè)表直接合在一起训挡。于是有一個(gè)突出的問(wèn)題澳骤,是橫向拼接還是縱向拼接歧强。

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
常用參數(shù):
obj:要合并的series,dataframe或者是panel構(gòu)成的序列为肮,常將這些數(shù)據(jù)排成一個(gè)列表[data1,data2....]摊册。
axis:按照哪個(gè)方向拼接,0是縱向拼接(默認(rèn))颊艳,1是橫向拼接茅特。
join:設(shè)置合并取交集(inner)還是并集(outer)∑逭恚縱向拼接時(shí)取column的交并集白修,橫向拼接時(shí)取index的交并集。
join_axes:index的列表重斑,僅在橫向合并時(shí)使用熬荆,指明要將數(shù)據(jù)合并入哪個(gè)原表的index。
ignore_index:如果設(shè)置為true绸狐,則無(wú)視表的index,直接合并累盗,合并后生成新的index寒矿。
keys:表標(biāo)識(shí)的列表,用來(lái)區(qū)分合并的表來(lái)自哪里若债。

1. 縱向合并

縱向合并axis=0符相,是將表在豎直方向拼接起來(lái),此時(shí)join參數(shù)控制的是column的交集或者并集蠢琳,使用join_axes會(huì)報(bào)錯(cuò)啊终。舉個(gè)栗子....



我們看到j(luò)oin參數(shù)控制著column的交并集。如果取并集傲须,不存在的位置會(huì)被補(bǔ)充上nan蓝牲。
另外,如果我們?cè)O(shè)置了ignore_index=True的話(huà)泰讽,數(shù)據(jù)合并后將會(huì)重新按照0例衍,1,2已卸,3.......的順序重新構(gòu)建索引佛玄。


2. 橫向合并

橫向合并axis=1,是將表在水平方向拼接起來(lái)累澡,此時(shí)join參數(shù)控制的是index的交集或者并集梦抢。
橫向合并時(shí),即便是列名相同愧哟,也不會(huì)合并成一列奥吩,因?yàn)榇藭r(shí)join控制的是index的交并集哼蛆。而ignore_index將會(huì)重排列名的索引,而不是重排index圈驼。



再來(lái)個(gè)index并集的栗子.....


  • join_axes參數(shù)

如果有join_axes的參數(shù)傳入人芽,可以指定根據(jù)哪個(gè)index來(lái)對(duì)齊數(shù)據(jù) 。例如根據(jù)df1表對(duì)齊數(shù)據(jù)绩脆,就會(huì)保留指定的df1表的index萤厅,然后將df4的表與之拼接,僅axis=1時(shí)有效靴迫。是不是有種熟悉的感覺(jué)惕味,嗯對(duì),和直接復(fù)制列一樣.....
result = pd.concat([df1, df4], axis=1, join_axes=[df1.index])

join_axes

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末玉锌,一起剝皮案震驚了整個(gè)濱河市名挥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌主守,老刑警劉巖禀倔,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異参淫,居然都是意外死亡救湖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)涎才,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鞋既,“玉大人,你說(shuō)我怎么就攤上這事耍铜∫毓耄” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵棕兼,是天一觀的道長(zhǎng)陡舅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)程储,這世上最難降的妖魔是什么蹭沛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮章鲤,結(jié)果婚禮上摊灭,老公的妹妹穿的比我還像新娘。我一直安慰自己败徊,他們只是感情好帚呼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般煤杀。 火紅的嫁衣襯著肌膚如雪眷蜈。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼棍鳖。 笑死牺丙,一個(gè)胖子當(dāng)著我的面吹牛豫尽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼榴啸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起晚岭,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鸥印,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后坦报,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體库说,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年片择,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了璃弄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡构回,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疏咐,到底是詐尸還是另有隱情纤掸,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布浑塞,位于F島的核電站借跪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏酌壕。R本人自食惡果不足惜掏愁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卵牍。 院中可真熱鬧果港,春花似錦、人聲如沸糊昙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至萝衩,卻和暖如春回挽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猩谊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工千劈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人牌捷。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓墙牌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親宜鸯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子憔古,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 利用pandas數(shù)據(jù)合并與重塑 1.concat函數(shù) concat函數(shù)是在pandas下的方法,可以將數(shù)據(jù)根據(jù)不同...
    w春風(fēng)十里w閱讀 9,671評(píng)論 0 1
  • 什么是pandas pandas是python的一個(gè)數(shù)據(jù)分析包淋袖,是基于NumPy的一種工具鸿市,該工具是為了解決數(shù)據(jù)分...
    TensorFlow開(kāi)發(fā)者閱讀 2,499評(píng)論 0 27
  • Pandas類(lèi)似R語(yǔ)言中的數(shù)據(jù)框(DataFrame),Pandas基于Numpy,但是對(duì)于數(shù)據(jù)框結(jié)構(gòu)的處理比Nu...
    井底蛙蛙呱呱呱閱讀 1,866評(píng)論 1 7
  • 簡(jiǎn)介 開(kāi)啟慢查詢(xún)?nèi)罩荆梢宰宮ysql記錄下查詢(xún)超過(guò)指定時(shí)間的語(yǔ)句即碗,通過(guò)定位分析性能的瓶頸焰情,才能更好的優(yōu)化數(shù)據(jù)庫(kù)系...
    zyqcoder閱讀 264評(píng)論 0 0
  • 最近上班,甚感倦意剥懒,幾次想請(qǐng)假的念頭都被無(wú)從可去掐滅.有時(shí)候想若是實(shí)現(xiàn)了財(cái)務(wù)自由内舟,你想做什么,細(xì)想一下,還真沒(méi)什么...
    語(yǔ)以筆閱讀 142評(píng)論 0 1