欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pandas中實(shí)現(xiàn)將相同ID的字符串進(jìn)行合并

 更新時間:2023年02月07日 10:25:09   作者:Just_do_it_2018  
這篇文章主要介紹了pandas中實(shí)現(xiàn)將相同ID的字符串進(jìn)行合并問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

問題描述

"""
id   value
1      A
1      B
1      C
2      D
2      E
2      F
變?yōu)椋?
id  value
1   [A,B,C]
2   [D,E,F]

pandas怎么把上面的結(jié)構(gòu)變?yōu)橄旅娴男问剑?
"""

自己的解決方案

import pandas as pd
import numpy as np
data = pd.DataFrame({'id':[1,1,1,2,2,2],'value':['A','B','C','D','E','F']})

data1 = np.array(data.groupby(['id']))#按照id進(jìn)行分類
# 轉(zhuǎn)變成array對象之后,可以根據(jù)data1[0][1]查看其結(jié)構(gòu)

id_kinds = 2#id的種類,此例比如1、2共兩種
all_value = []
for j in range(2):
    value = []
    for i in data1[j][1]['value']:
        value.append(i)
    all_value.append(value)
print(all_value)

#再創(chuàng)建新的dataframe
new_data = pd.DataFrame({'id':[1,2],'value':all_value})
print(new_data)

輸出結(jié)果為:

   id      value
0   1  [A, B, C]
1   2  [D, E, F]

大神的更優(yōu)化的解法

解法一:

可以用sum方法,將字符串進(jìn)行連接

import pandas as pd
import numpy as np
data = pd.DataFrame({'id':[1,1,1,2,2,2],'value':['A','B','C','D','E','F']})
data1 = data.groupby(by='id')['value'].sum()

此時的輸出結(jié)果為:

id
1    ABC
2    DEF
Name: value, dtype: object

但是還不是我們想要的,因?yàn)槲覀冞€需要在中間加入逗號分隔

① 我們可以先將原始數(shù)據(jù)的value都變成“,A”

data = pd.DataFrame({'id':[1,1,1,2,2,2],'value':['A','B','C','D','E','F']})
data['value'] = data['value'].apply(lambda x:','+ x)

② 然后,對其使用sum方法進(jìn)行字符串相加

data1 = data.groupby(by='id').sum()

此時的輸出結(jié)果為,value值之前多了“,”

id  value
1   ,A,B,C
2   ,D,E,F

③ 最后,對該列使用apply函數(shù),去除‘,’

data1['value'] = data1['value'].apply(lambda x :[x[1:]])

就得到了最終的結(jié)果:

id  value
1   [A,B,C]
2   [D,E,F]

解法二:

對分組之后的結(jié)果,直接使用apply函數(shù)

一行代碼就搞定!

data1 = data.groupby(by='id').apply(lambda x:[','.join(x['value'])])

那為什么可以這么做呢?

首先需要剖析的是,groupby之后的數(shù)據(jù)結(jié)構(gòu)是什么樣的,它是由元組構(gòu)成的(分組名,數(shù)據(jù)塊),數(shù)據(jù)塊也就是dataframe結(jié)構(gòu)。使用以下方式可以查看groupby之后的對象:

for ID,group in group_df:
? ? print(ID)
? ? print(group)

apply函數(shù)中的x作用的即是數(shù)據(jù)塊(dataframe),通過數(shù)據(jù)塊取value那一行得到的是Series對象,于是可以使用join方法進(jìn)行操作。

總結(jié)

sum方法不僅可以用于數(shù)值計(jì)算,還可用于對于一個Series對象而言的字符串相加

a = ['a','b']
c = pd.Series(a).sum()

apply函數(shù)非常靈活,不僅可以作用于一個Series對象,還可以作用于一個groupby之后的數(shù)據(jù)塊

data['value'].apply(lambda x :*****)
data.groupby(by='**').apply(lambda x :*****)

lambda匿名函數(shù)可以極大優(yōu)化精簡我們的代碼,是一個非常靈活好用的函數(shù),記住它!

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python之eval()函數(shù)危險(xiǎn)性淺析

    Python之eval()函數(shù)危險(xiǎn)性淺析

    這篇文章主要介紹了Python之eval()函數(shù)危險(xiǎn)性淺析,需要的朋友可以參考下
    2014-07-07
  • 面向初學(xué)者的Python編輯器Mu

    面向初學(xué)者的Python編輯器Mu

    今天小編就為大家分享一篇關(guān)于一個面向初學(xué)者的Python編輯器Mu,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • python3 中的字符串(單引號、雙引號、三引號)以及字符串與數(shù)字的運(yùn)算

    python3 中的字符串(單引號、雙引號、三引號)以及字符串與數(shù)字的運(yùn)算

    這篇文章主要介紹了python3 中的字符串(單引號、雙引號、三引號)以及字符串與數(shù)字的運(yùn)算,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • django admin 后臺實(shí)現(xiàn)三級聯(lián)動的示例代碼

    django admin 后臺實(shí)現(xiàn)三級聯(lián)動的示例代碼

    這篇文章主要介紹了django admin 后臺實(shí)現(xiàn)三級聯(lián)動的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • python不同系統(tǒng)中打開方法

    python不同系統(tǒng)中打開方法

    在本篇文章里小編給大家分享的是一篇關(guān)于python在不同系統(tǒng)中打開的方法,有興趣的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • 將.ipynb文件轉(zhuǎn)換成.py文件詳細(xì)步驟(一看就會)

    將.ipynb文件轉(zhuǎn)換成.py文件詳細(xì)步驟(一看就會)

    這篇文章主要給大家介紹了關(guān)于如何將.ipynb文件轉(zhuǎn)換成.py文件的詳細(xì)步驟,文中通過圖文介紹的非常詳細(xì),大家基本一看就會,需要的朋友可以參考下
    2023-07-07
  • 用Python的Django框架完成視頻處理任務(wù)的教程

    用Python的Django框架完成視頻處理任務(wù)的教程

    這篇文章主要介紹了用Python的Django框架完成視頻處理任務(wù)的教程,包括用戶的視頻上傳和播放以及下載功能的實(shí)現(xiàn),需要的朋友可以參考下
    2015-04-04
  • python中eval與int的區(qū)別淺析

    python中eval與int的區(qū)別淺析

    這篇文章主要給大家介紹了關(guān)于python中eval與int的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python使用Beautiful Soup爬取豆瓣音樂排行榜過程解析

    Python使用Beautiful Soup爬取豆瓣音樂排行榜過程解析

    這篇文章主要介紹了Python使用Beautiful Soup爬取網(wǎng)頁過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python如何進(jìn)行時間處理

    Python如何進(jìn)行時間處理

    這篇文章主要介紹了Python如何進(jìn)行時間處理,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08

最新評論