pandas 實(shí)現(xiàn)某一列分組,其他列合并成list
pandas列轉(zhuǎn)換為字典,但將相同第一列(鍵)的所有值合并為一個(gè)鍵
形式一:
import pandas as pd
# data
data = pd.DataFrame({'column1':['key1','key1','key2','key2'],
'column2':['value1','value2','value3','value3']})
print(data)
# Grouped dict
data_dict = data.groupby('column1').column2.apply(list).to_dict()
print(data_dict)
輸出結(jié)果:
column1 column2
0 key1 value1
1 key1 value2
2 key2 value3
3 key2 value3
{'key1': ['value1', 'value2'], 'key2': ['value3', 'value3']}
形式二:
import pandas as pd
# data
df = pd.DataFrame({'column1':['key1','key1','key2','key2'],
'column2':['value1','value2','value1','value2'],
'column3':['value11','value11','value22','value22'],
'column4':['value44','value44','value55','value55']})
# Grouped dict
data_dict = df.groupby('column1').apply(lambda x: {col:x[col].tolist() for col in x.columns if col != 'column2'}).to_dict()
print(data_dict)
data_dict2 = df.groupby('column1').apply(lambda x: {col:x[col].tolist()[0] if col != 'column2' else x[col].tolist() for col in x.columns}).to_dict()
print(data_dict2)
輸出結(jié)果:
#data_dict
{
'key1': {
'column1': ['key1', 'key1'],
'column3': ['value11', 'value11'],
'column4': ['value44', 'value44']
},
'key2': {
'column1': ['key2', 'key2'],
'column3': ['value22', 'value22'],
'column4': ['value55', 'value55']
}
}
#data_dict2
{
'key1': {
'column1': 'key1',
'column2': ['value1', 'value2'],
'column3': 'value11',
'column4': 'value44'
},
'key2': {
'column1': 'key2',
'column2': ['value1', 'value2'],
'column3': 'value22',
'column4': 'value55'
}
}
補(bǔ)充:pandas中,利用groupby分組后,對(duì)字符串字段進(jìn)行合并拼接
在pandas里對(duì)于數(shù)值字段而言,groupby后可以用sum()、max()等方法進(jìn)行簡(jiǎn)單的處理,對(duì)于字符串字段, 如果把它們的值拼接在一起,可以用使用 str.cat() 和 lamda 方法。
如,將下面表格中的內(nèi)容,對(duì)skill字段按照id進(jìn)行分組合并

實(shí)現(xiàn)代碼:
import pandas as pd
file_name='test.xlsx'
df=pd.read_excel(file_name)
data=df.groupby('id')['skill'].apply(lambda x:x.str.cat(sep=':')).reset_index()
print(data)
效果如下:

另,數(shù)據(jù)處理時(shí),常常需要將某一列進(jìn)行拆分,分列,替換等,相關(guān)的函數(shù)有str.split()、str.extract()、str.replace().

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- pandas之分組統(tǒng)計(jì)列聯(lián)表pd.crosstab()問(wèn)題
- Python?Pandas:DataFrame一列切分成多列、分隔符切分選字段方式
- Python pandas入門(mén)系列之眾數(shù)和分位數(shù)
- pandas將list數(shù)據(jù)拆分成行或列的實(shí)現(xiàn)
- Pandas實(shí)現(xiàn)一列數(shù)據(jù)分隔為兩列
- pandas 使用均值填充缺失值列的小技巧分享
- Python學(xué)習(xí)筆記之pandas索引列、過(guò)濾、分組、求和功能示例
- pandas數(shù)據(jù)分列實(shí)現(xiàn)分割符號(hào)&固定寬度
相關(guān)文章
升級(jí)Python版本后anaconda navigator啟動(dòng)失敗解決方案(最新推薦)
anaconda navigator啟動(dòng)失敗,尤其是重裝不解決問(wèn)題的,大概率是庫(kù)沖突,解決方法也很簡(jiǎn)單,只需要?jiǎng)h掉引起沖突的庫(kù),感興趣的朋友跟隨小編一起看看吧2023-11-11
Python?range函數(shù)生成一系列連續(xù)整數(shù)的內(nèi)部機(jī)制解析
這篇文章主要為大家介紹了Python?range函數(shù)生成一系列連續(xù)整數(shù)的內(nèi)部機(jī)制解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Opencv-Python圖像透視變換cv2.warpPerspective的示例
今天小編就為大家分享一篇關(guān)于Opencv-Python圖像透視變換cv2.warpPerspective的示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04
Python讀取Excel數(shù)據(jù)并生成圖表過(guò)程解析
這篇文章主要介紹了Python讀取Excel數(shù)據(jù)并生成圖表過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
python常見(jiàn)字符串處理函數(shù)與用法匯總
這篇文章主要介紹了python常見(jiàn)字符串處理函數(shù)與用法,結(jié)合實(shí)例形式詳細(xì)分析了Python字符串操作函數(shù)find、join、replace及split功能、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-10-10
Python 普通最小二乘法(OLS)進(jìn)行多項(xiàng)式擬合的方法
今天小編就為大家分享一篇Python 普通最小二乘法(OLS)進(jìn)行多項(xiàng)式擬合的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Python&Matlab實(shí)現(xiàn)伏羲八卦圖的繪制
八卦最先由伏羲根據(jù)燧人氏造設(shè)的兩幅星圖歷法《河圖洛書(shū)》創(chuàng)設(shè)。本文將通過(guò)Python和Matlab分別繪制伏羲八卦圖,感興趣的小伙伴可以了解一下2022-03-03

