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

Pandas實(shí)現(xiàn)列(column)排序的幾種方法

 更新時(shí)間:2023年11月26日 10:35:35   作者:AI科技大本營(yíng)  
Pandas是一種高效的數(shù)據(jù)處理庫(kù),在數(shù)據(jù)處理過(guò)程中,咱們經(jīng)常需要將列按照一定的要求進(jìn)行排序,本文就來(lái)介紹一下Pandas實(shí)現(xiàn)列(column)排序的幾種方法,感興趣的可以了解一下

Pandas 可以說(shuō)是 在Python數(shù)據(jù)科學(xué)領(lǐng)域應(yīng)用最為廣泛的工具之一。

Pandas是一種高效的數(shù)據(jù)處理庫(kù),它以 dataframe 和 series 為基本數(shù)據(jù)類(lèi)型,呈現(xiàn)出類(lèi)似excel的二維數(shù)據(jù)。

在數(shù)據(jù)處理過(guò)程中,咱們經(jīng)常需要將列按照一定的要求進(jìn)行排序,以方便展示。

這里,給大家分享下 在 Pandas 中將列排序的幾種常用方法。

數(shù)據(jù)準(zhǔn)備

文中主要使用了 pandas 和 akshare ,首先導(dǎo)入 Python 庫(kù),如下:

import pandas as pd
import akshare as ak

print(f'pandas version: {pd.__version__}')

本次使用的數(shù)據(jù)如下:

data = {
    'brand':['Python數(shù)據(jù)之道','價(jià)值前瞻','菜鳥(niǎo)數(shù)據(jù)之道','Python','Java'],
    'B':[4,6,8,12,10],
    'A':[10,2,5,20,16],
    'D':[6,18,14,6,12],
    'years':[4,1,1,30,30],
    'C':[8,12,18,8,2],
}

df = pd.DataFrame(data=data)
df

7a120b640f64e8a2ec0d95b364a35f2c.png

現(xiàn)將現(xiàn)有的 columns 輸出,方便后面 copy 使用。

df.columns

# Index(['brand', 'B', 'A', 'D', 'years', 'C'], dtype='object')

Method 1

第一種方法,也是我自己常用的方法,就是自己將列的名稱(chēng)按需要進(jìn)行手動(dòng)排序,然后運(yùn)行代碼如下:

508c9a1e44af41bdd7e1de1d5136e145.png

Method 2

第二種方法,是使用 .iloc 方法,通過(guò)列的位置來(lái)進(jìn)行排序,如下:

0947c6a4e7373f914538395b47d3f85e.png

Method 3

第三種方法,是使用 .loc 方法,通過(guò)列的名稱(chēng)來(lái)進(jìn)行排序,如下:

26a142963269dccf3ee02640dfabc110.png

這種方法跟第一種方法類(lèi)似,個(gè)人覺(jué)得第一種方法更簡(jiǎn)潔些。

Method 4

第四種是 逆序 排序,算是排序中一種特定的排序方式。

# Method 4 ,逆序

cols = list(df.columns)

cols.reverse()

df[cols]

上述代碼中,cols.reverse() 是將列表(list)進(jìn)行逆序排序。

此外,列表(list)的逆序排序,還可以用 cols[::-1] 來(lái)實(shí)現(xiàn)。因此,下面的方法也可以實(shí)現(xiàn)逆序排序。

# Method 4 ,逆序

cols = list(df.columns)

df[cols[::-1]]

0c2fcfcfdf5fa957b550a12db893f92a.png

實(shí)戰(zhàn)案例:自由排序

有時(shí)候,當(dāng)存在變量、列的數(shù)量較多,或者不同的dataframe中列的名稱(chēng)不完全一致等情況出現(xiàn)時(shí),咱們不一定會(huì)通過(guò)列名稱(chēng)來(lái)實(shí)現(xiàn)排序。

這里分享一個(gè)實(shí)戰(zhàn)案例,是關(guān)于制作基金的十大持倉(cāng)數(shù)據(jù)表的,具體過(guò)程我就不在這里描述了,下面給出實(shí)現(xiàn)的函數(shù),有興趣的同學(xué)可以研究下。

自定義函數(shù)如下:

# 需要安裝 akshare
# pip install akshare

years = ['2019','2020','2021']

def fund_stock_holding(years,code):
    data = pd.DataFrame()
    for yr in years:
        df_tmp = ak.fund_em_portfolio_hold(code=code,year=yr)
        data = data.append(df_tmp)

    data['季度']=data['季度'].apply(lambda x:x[:8])
    data['占凈值比例'] = pd.to_numeric(data['占凈值比例'])
    data = data.sort_values(['季度','持倉(cāng)市值'],ascending=[True,False])
    df = data.set_index(['序號(hào)','季度']).stack().unstack([1,2]).head(10)
    df = df.loc[:,(slice(None), '股票名稱(chēng)')]
    df = df.droplevel(None,axis=1)
    df.columns.name=None
    df = df.reset_index()
#     df.index.name = None
    df['基金代碼'] = code
    return df
    
df = fund_stock_holding(years,'005669')
df

得到的數(shù)據(jù)表格如下:

ad00a57248cc62665f3833ced80917bf.png

上面的表格中,我需要將 基金代碼 這一列移動(dòng)到 序號(hào) 這列的后面,由于 years = ['2019','2020','2021'] 這是一個(gè)變量,當(dāng)具體的值不同時(shí),會(huì)導(dǎo)致列名稱(chēng)不一樣,因此,在這種情況下我們不能直接使用列的具體名稱(chēng),但咱們可以通過(guò) 列的位置組合來(lái)實(shí)現(xiàn),列的調(diào)整具體如下:

cols = df.columns.tolist()
    cols = cols[:1] + cols[-1:] + cols[1:-1]  # 將基金代碼列名放前面
    df = df[cols]

將上面的調(diào)整過(guò)程整合到自定義函數(shù)中,完整的代碼如下:

# 需要安裝 akshare
# pip install akshare

years = ['2019','2020','2021']

def fund_stock_holding_update(years,code):
    data = pd.DataFrame()
    for yr in years:
        df_tmp = ak.fund_em_portfolio_hold(code=code,year=yr)
        data = data.append(df_tmp)

    data['季度']=data['季度'].apply(lambda x:x[:8])
    data['占凈值比例'] = pd.to_numeric(data['占凈值比例'])
    data = data.sort_values(['季度','持倉(cāng)市值'],ascending=[True,False])
    df = data.set_index(['序號(hào)','季度']).stack().unstack([1,2]).head(10)
    df = df.loc[:,(slice(None), '股票名稱(chēng)')]
    df = df.droplevel(None,axis=1)
    df.columns.name=None
    df = df.reset_index()
#     df.index.name = None
    df['基金代碼'] = code
    cols = df.columns.tolist()
    cols = cols[:1] + cols[-1:] + cols[1:-1]  # 將基金代碼列名放前面
    df = df[cols]
    return df
    
df = fund_stock_holding_update(years,'005669')
df

效果如下:

a1a712bdf58e9744cf937c280163b509.png

當(dāng)然,我最后實(shí)現(xiàn)的效果是將基金代碼換成基金名稱(chēng),這個(gè)可以想辦法實(shí)現(xiàn),效果如下:

9b7746821f7a7869fce9f38c2aef0b2a.png

小結(jié)

以上就是關(guān)于 Pandas 中 列名稱(chēng)排序的介紹,看似很簡(jiǎn)單的內(nèi)容,在最后的實(shí)踐中,也還是有些小技巧的。

到此這篇關(guān)于Pandas實(shí)現(xiàn)列(column)排序的幾種方法的文章就介紹到這了,更多相關(guān)Pandas 列排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 變量的創(chuàng)建過(guò)程詳解

    Python 變量的創(chuàng)建過(guò)程詳解

    這篇文章主要介紹了Python 變量的創(chuàng)建過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python實(shí)現(xiàn)考試自動(dòng)答題的腳本分享

    Python實(shí)現(xiàn)考試自動(dòng)答題的腳本分享

    最近這段時(shí)間天氣正正好,不冷不熱,是學(xué)習(xí)考駕照的好時(shí)機(jī)。為了幫助大家能夠順利獲得駕照,小編為大家準(zhǔn)備了駕照考試的自動(dòng)答題小程序,希望對(duì)大家有所幫助
    2023-03-03
  • django傳值給模板, 再用JS接收并進(jìn)行操作的實(shí)例

    django傳值給模板, 再用JS接收并進(jìn)行操作的實(shí)例

    今天小編就為大家分享一篇django傳值給模板, 再用JS接收并進(jìn)行操作的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • pandas數(shù)據(jù)拼接的實(shí)現(xiàn)示例

    pandas數(shù)據(jù)拼接的實(shí)現(xiàn)示例

    這篇文章主要介紹了pandas數(shù)據(jù)拼接的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python連接Redis的基本配置方法

    Python連接Redis的基本配置方法

    本文分享了Linux系統(tǒng)下Python連接Redis的基本配置方法,Python連接Redis需要Redis的Python包支持
    2018-09-09
  • python無(wú)限生成不重復(fù)(字母,數(shù)字,字符)組合的方法

    python無(wú)限生成不重復(fù)(字母,數(shù)字,字符)組合的方法

    今天小編就為大家分享一篇python無(wú)限生成不重復(fù)(字母,數(shù)字,字符)組合的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python將list中的string批量轉(zhuǎn)化成int/float的方法

    Python將list中的string批量轉(zhuǎn)化成int/float的方法

    今天小編就為大家分享一篇Python將list中的string批量轉(zhuǎn)化成int/float的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Python自動(dòng)化之定位方法大殺器xpath

    Python自動(dòng)化之定位方法大殺器xpath

    selenium的幾種定位方法中,大殺器之一就是xpath方法,學(xué)會(huì)它,你將無(wú)所不能.本文就帶大家詳細(xì)了解一下這個(gè)大殺器,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-05-05
  • python ipset管理 增刪白名單的方法

    python ipset管理 增刪白名單的方法

    今天小編就為大家分享一篇python ipset管理 增刪白名單的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 如何解決jupyter notebook無(wú)法導(dǎo)入自己安裝的包

    如何解決jupyter notebook無(wú)法導(dǎo)入自己安裝的包

    這篇文章主要介紹了如何解決jupyter notebook無(wú)法導(dǎo)入自己安裝的包問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評(píng)論

本溪| 哈密市| 新宾| 新闻| 城固县| 寻乌县| 玛曲县| 阳新县| 太湖县| 铜川市| 会东县| 花莲市| 金湖县| 石城县| 东海县| 广西| 福建省| 雅江县| 修文县| 日照市| 贵州省| 泰州市| 浙江省| 绥阳县| 进贤县| 逊克县| 禄劝| 晋城| 云浮市| 苍山县| 托里县| 都匀市| 晋中市| 吴江市| 喀喇沁旗| 清流县| 南郑县| 东乌珠穆沁旗| 新巴尔虎左旗| 兰州市| 元江|