最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

問(wèn)題描述

"""
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)行分類(lèi)
# 轉(zhuǎn)變成array對(duì)象之后,可以根據(jù)data1[0][1]查看其結(jié)構(gòu)

id_kinds = 2#id的種類(lèi),此例比如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()

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

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

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

① 我們可以先將原始數(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)

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

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

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

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

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

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

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

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

解法二:

對(duì)分組之后的結(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之后的對(duì)象:

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

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

總結(jié)

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

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

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

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

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

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

相關(guān)文章

  • Python 點(diǎn)集排序之帶索引的Z字形排序算法實(shí)現(xiàn)代碼

    Python 點(diǎn)集排序之帶索引的Z字形排序算法實(shí)現(xiàn)代碼

    這篇文章介紹了如何使用Python在Grasshopper中實(shí)現(xiàn)點(diǎn)集排序功能,包括點(diǎn)的Y坐標(biāo)分組和X坐標(biāo)排序,以及追蹤每個(gè)點(diǎn)的原始索引位置,通過(guò)創(chuàng)建點(diǎn)索引對(duì)、分組邏輯和排序,實(shí)現(xiàn)了Z字形排序算法,感興趣的朋友一起看看吧
    2025-01-01
  • pytest官方文檔解讀fixtures的調(diào)用方式

    pytest官方文檔解讀fixtures的調(diào)用方式

    這篇文章主要為大家介紹了pytest官方文檔解讀fixtures的調(diào)用方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python內(nèi)置模塊Collections的使用教程詳解

    Python內(nèi)置模塊Collections的使用教程詳解

    collections 是 Python 的一個(gè)內(nèi)置模塊,所謂內(nèi)置模塊的意思是指 Python 內(nèi)部封裝好的模塊,無(wú)需安裝即可直接使用。本文將詳解介紹Collections的使用方式,需要的可以參考一下
    2022-03-03
  • Python 中的參數(shù)傳遞、返回值、淺拷貝、深拷貝

    Python 中的參數(shù)傳遞、返回值、淺拷貝、深拷貝

    這篇文章主要介紹了Python 中的參數(shù)傳遞、返回值、淺拷貝、深拷貝,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Python的字符串操作簡(jiǎn)單實(shí)例

    Python的字符串操作簡(jiǎn)單實(shí)例

    這篇文章主要介紹了Python的字符串操作簡(jiǎn)單實(shí)例,字符串有許多種操作方式,本文帶來(lái)幾個(gè)操作實(shí)例,快來(lái)一起看看吧
    2023-04-04
  • 使用Python獲取Linux系統(tǒng)的各種信息

    使用Python獲取Linux系統(tǒng)的各種信息

    這篇文章主要介紹了使用Python獲取Linux系統(tǒng)的各種信息,例如系統(tǒng)類(lèi)型、CPU信息、內(nèi)存信息、塊設(shè)備等,需要的朋友可以參考下
    2014-07-07
  • Django集成百度富文本編輯器uEditor攻略

    Django集成百度富文本編輯器uEditor攻略

    UEditor是由百度web前端研發(fā)部開(kāi)發(fā)所見(jiàn)即所得富文本web編輯器,具有輕量,可定制,注重用戶體驗(yàn)等特點(diǎn),開(kāi)源基于MIT協(xié)議,允許自由使用和修改代碼。
    2014-07-07
  • pytorch.range()和pytorch.arange()的區(qū)別及說(shuō)明

    pytorch.range()和pytorch.arange()的區(qū)別及說(shuō)明

    這篇文章主要介紹了pytorch.range()和pytorch.arange()的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python 中的列表生成式、生成器表達(dá)式、模塊導(dǎo)入

    python 中的列表生成式、生成器表達(dá)式、模塊導(dǎo)入

    這篇文章主要介紹了python中的列表生成式、生成器表達(dá)式、模塊導(dǎo)入 ,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Python?matplotlib中更換畫(huà)布背景顏色的3種方法

    Python?matplotlib中更換畫(huà)布背景顏色的3種方法

    這篇文章主要給大家介紹了關(guān)于Python?matplotlib中更換畫(huà)布背景顏色的3種方法,在Matplotlib中,我們可以使用set_facecolor()方法來(lái)設(shè)置背景顏色,文中通過(guò)圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11

最新評(píng)論

盘锦市| 建湖县| 调兵山市| 澄城县| 南汇区| 元谋县| 文山县| 麦盖提县| 巴彦淖尔市| 鹤山市| 林甸县| 宜黄县| 潢川县| 涞源县| 雅安市| 峡江县| 宁安市| 阿拉尔市| 平利县| 北碚区| 台东县| 堆龙德庆县| 景谷| 台山市| 溧水县| 平阴县| 边坝县| 焦作市| 高尔夫| 岑溪市| 来宾市| 木里| 兰考县| 临邑县| 井冈山市| 芦溪县| 肃宁县| 鄂托克旗| 民和| 兴海县| 南京市|