pandas將DataFrame的幾列數(shù)據(jù)合并成為一列
1.1 方法歸納
- 使用 + 直接將多列合并為一列(合并列較少);
- 使用pandas.Series.str.cat方法,將多列合并為一列(合并列較多);
范例如下:
dataframe["newColumn"] = dataframe["age"].map(str) + dataframe["phone"] + dataframe["address”] #或者 dataframe["newColumn"] = dataframe["age"].map(str).str.cat([dataframe["phone"],dataframe["address”]],sep='-',na_rep='?')
注意事項(xiàng):
- 參與合并的列的數(shù)據(jù)類(lèi)型必須為str類(lèi)型,int和float等數(shù)值類(lèi)型需先轉(zhuǎn)化為str;
- 參與合并的列的長(zhǎng)度必須相同(即:行數(shù)),否則報(bào)錯(cuò),但使用pandas.Series.str.cat方法,可通過(guò)指定參數(shù)join={‘left’, ‘right’, ‘outer’, ‘inner’},實(shí)現(xiàn)長(zhǎng)度不相等的列合并;
- 參與合并的列的各行元素均不為NaN,否則,只要有一列的對(duì)應(yīng)行元素為NaN,則合并結(jié)果中該行將為NaN,但使用pandas.Series.str.cat方法,可通過(guò)指定參數(shù)na_rep='-',將各列中缺失行元素填充為‘-’,從而保留合并列的所有行元素;
1.2 .str.cat函數(shù)詳解
1.2.1 語(yǔ)法格式:
# pandas.Series.str.cat語(yǔ)法如下: Series.str.cat(others=None, sep=None, na_rep=None, join=None)
1.2.2 參數(shù)說(shuō)明:
others : 準(zhǔn)備合并的字符串列表,其數(shù)據(jù)類(lèi)型可以為:Series, Index, DataFrame, np.ndarrary(N元數(shù)組) or list-like(類(lèi)似列表)
備注: 由于默認(rèn)join=None,所以欲合并的兩個(gè)(多個(gè))字符串列表必須具有相同的長(zhǎng)度,否則需設(shè)置參數(shù)join= {‘left’, ‘right’, ‘outer’, ‘inner’},來(lái)控制多個(gè)字符串列表的合并方式。
(1)如果others=None(即:字符串列表df[col_1]不與其他字符串列表合并),結(jié)果將不傳遞其他值,而是將df[col_1]的所有值都連接成一個(gè)字符串;(詳見(jiàn)范例1-1)
(2)如果others≠None(即:指定了與字符串列表df[col_1]合并的其他字符串列表df[col_2]),結(jié)果將用分隔符把df[col_1]與df[col_2]對(duì)應(yīng)的行值連接在一起, 返回Series。(詳見(jiàn)范例1-2)
sep:合并結(jié)果中不同元素/列之間的分隔符。默認(rèn)情況下,使用空字符串’ ’ 。
na_rep:為所有缺失值插入的內(nèi)容,其數(shù)據(jù)類(lèi)型可以為:str或None,默認(rèn)na_rep=None
備注:
(1)如果na_rep=None,則多個(gè)合并列中只要有一列的對(duì)應(yīng)行元素為NaN,合并結(jié)果中該行元素將為NaN;
(2)如果na_rep=‘str’(str需自定義),則合并列中各缺失行元素將被填充為‘str’,合并結(jié)果將保留合并列的所有行元素;
join :確定連接方式,其可能的取值為:{‘left’, ‘right’, ‘outer’, ‘inner’},默認(rèn)join=None
1.2.3 核心功能:
- 將Series中的多個(gè)字符串[‘a’, ‘b’, ‘c’]拼接為一個(gè)字符串’a b c’(字符串拼接)
- 將DataFrame中的兩(多)列df[col_1]和df[col_2]合并為一列(多列合并)
備注: pandas.Series.str.cat僅適用于str類(lèi)型的數(shù)據(jù),int和float等數(shù)值型需先轉(zhuǎn)化為str型,才可調(diào)用此方法。
int型轉(zhuǎn)為str的方法:
1、df[‘Price’]=df[‘Price’].map(lambda x: str(x))
2、df[‘Price’]=df[‘Price’].map(str)
3、df[‘Price’]=df[‘Price’].astype(‘str’)
若要同時(shí)將多列合并為一列,需引入列表list來(lái)指定準(zhǔn)備合并的列,例如:
df[col_1].str.cat([df[col_2],df[col_3],df[col_4]],sep='-')
1.2.4 常見(jiàn)范例:
import numpy as np import pandas as pd #創(chuàng)建原始數(shù)據(jù) s=pd.Series(['a','b',np.nan,'d']) >>> s 0 a 1 b 2 NaN 3 d # other=None時(shí),調(diào)用s.str.cat(),可將series轉(zhuǎn)為用分隔符sep分隔的字符串,缺失項(xiàng)將被省略 s1=s.str.cat(sep=' ') >>> s1 'a b d' # other=None時(shí),指定na_rep='?',結(jié)果將保留原series中的缺失項(xiàng),并用?代替 s2=s.str.cat(sep=' ',na_rep='?') >>> s2 'a b ? d' # other≠None時(shí),調(diào)用s.str.cat(),可將兩個(gè)字符串列表df[col_1]與df[col_2]合并為一列,結(jié)果用分隔符sep分隔各項(xiàng)元素,由于默認(rèn)na_rep=None,故合并時(shí)若df[col_1]與df[col_2]的對(duì)應(yīng)行元素有一個(gè)為NaN,則合并后該行元素值將為None,結(jié)果返回Series s3=s.str.cat(['A','B','C','D'],sep=',') >>> s3 0 a,A 1 b,B 2 NaN 3 d,D # other≠None時(shí),調(diào)用s.str.cat(),可將兩個(gè)字符串列表df[col_1]與df[col_2]合并為一列,指定na_rep='-',故合并結(jié)果將保留df[col_1]與df[col_2]的所有行,且將df[col_1]與df[col_2]的缺失項(xiàng)填充為‘-' s4=s.str.cat(['A','B','C','D'],sep=',',na_rep='-') >>> s4 0 a,A 1 b,B 2 -,C 3 d,D # 欲合并的字符串列表df[col_1]與df[col_2]的索引不同時(shí),需指定參數(shù)join,確定連接方式 t=pd.Series(['d','a','e','c'],index=[3,0,4,2]) s_1=s.str.cat(t,join='left',na_rep='-') >>> s_1 0 aa 1 b- 2 -c 3 dd s_2=s.str.cat(t,join='outer',na_rep='-') >>> s_2 0 aa 1 b- 2 -c 3 dd 4 -e s_3=s.str.cat(t,join='inner',na_rep='-') >>> s_3 0 aa 2 -c 3 dd s_4=s.str.cat(t,join='right',na_rep='-') >>> s_4 3 dd 0 aa 4 -e 2 -c
到此這篇關(guān)于pandas將DataFrame的幾列數(shù)據(jù)合并成為一列的文章就介紹到這了,更多相關(guān)pandas DataFrame列合并內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Pandas 合并多個(gè)Dataframe(merge,concat)的方法
- pandas dataframe的合并實(shí)現(xiàn)(append, merge, concat)
- Pandas中DataFrame的分組/分割/合并的實(shí)現(xiàn)
- pandas中DataFrame數(shù)據(jù)合并連接(merge、join、concat)
- Pandas實(shí)現(xiàn)Dataframe的合并
- Python數(shù)據(jù)分析之?Pandas?Dataframe合并和去重操作
- Python Pandas實(shí)現(xiàn)DataFrame合并的圖文教程
- Pandas中Dataframe合并的實(shí)現(xiàn)
相關(guān)文章
python數(shù)組處理之最值與下標(biāo)問(wèn)題
這篇文章主要介紹了python數(shù)組處理之最值與下標(biāo)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
python對(duì)批量WAV音頻進(jìn)行等長(zhǎng)分割的方法實(shí)現(xiàn)
這篇文章主要介紹了python對(duì)批量WAV音頻進(jìn)行等長(zhǎng)分割的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
django 擴(kuò)展user用戶字段inlines方式
這篇文章主要介紹了django 擴(kuò)展user用戶字段inlines方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Pycharm遠(yuǎn)程連接服務(wù)器跑代碼的實(shí)現(xiàn)
本文主要介紹了Pycharm遠(yuǎn)程連接服務(wù)器跑代碼的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Python實(shí)現(xiàn)解析命令行參數(shù)的常見(jiàn)方法總結(jié)
除ide的執(zhí)行方式外,命令行的方式執(zhí)行Python腳本是參數(shù)化程序執(zhí)行的一種常見(jiàn)且簡(jiǎn)單的方法。本文總結(jié)了三個(gè)常見(jiàn)的獲取和解析命令行參數(shù)的方法,需要的可以參考一下2022-10-10
Python解方程組 scipy.optimize.fsolve()函數(shù)如何求解帶有循環(huán)求和的方程式
這篇文章主要介紹了Python解方程組 scipy.optimize.fsolve()函數(shù)如何求解帶有循環(huán)求和的方程式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
Python機(jī)器學(xué)習(xí)算法庫(kù)scikit-learn學(xué)習(xí)之決策樹(shù)實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Python機(jī)器學(xué)習(xí)算法庫(kù)scikit-learn學(xué)習(xí)之決策樹(shù)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了決策樹(shù)算法的原理及使用sklearn庫(kù)實(shí)現(xiàn)決策樹(shù)的相關(guān)操作技巧,需要的朋友可以參考下2019-07-07

