第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Python Pandas:在 df 列中使用“標(biāo)志值”創(chuàng)建連續(xù)的 id 值并將其顯示在另一列中

Python Pandas:在 df 列中使用“標(biāo)志值”創(chuàng)建連續(xù)的 id 值并將其顯示在另一列中

冉冉說 2021-10-26 18:31:53
我有一個(gè)非常大的數(shù)據(jù)框(20.000.000+ 行),其中包含一個(gè)名為“序列”的列?!靶蛄小绷惺歉鶕?jù)應(yīng)用一些條件語句的時(shí)間序列計(jì)算得出的。值“2”標(biāo)記序列的開始,值“3”標(biāo)記序列的結(jié)束,值“1”標(biāo)記序列內(nèi)的數(shù)據(jù)點(diǎn),值“4”標(biāo)記需要忽略的數(shù)據(jù)點(diǎn)。(注意:標(biāo)志值不一定必須是 1、2、3、4)我想要實(shí)現(xiàn)的是一個(gè)連續(xù)的 ID 值(寫在一個(gè)單獨(dú)的列中 - 請(qǐng)參閱下面示例中的“desired_Id_Output”),它以獨(dú)特的方式標(biāo)記 2 - 3 的序列切片(序列的長(zhǎng)度可變,范圍從2 [僅開始+結(jié)束] 到 5000 多個(gè)數(shù)據(jù)點(diǎn)),以便能夠?qū)Ω鱾€(gè)序列進(jìn)行進(jìn)一步的分組計(jì)算。index  sequence    desired_Id_Output    0          2                  1                   1          1                  1                   2          1                  1                   3          1                  1                   4          1                  1                   5          3                  1                   6          2                  2                   7          1                  2                   8          1                  2                   9          3                  2                   10         4                  NaN                   11         4                  NaN                   12         2                  3                   13         3                  3                   提前致謝,BR!
查看完整描述

2 回答

?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

計(jì)算序列開始是否有效?然后只需設(shè)置忽略值(標(biāo)志4)。像這樣:


sequence_starts = df.sequence == 2

sequence_ignore = df.sequence == 4

sequence_id = sequence_starts.cumsum()

sequence_id[sequence_ignore] = numpy.nan


查看完整回答
反對(duì) 回復(fù) 2021-10-26
?
肥皂起泡泡

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊

我想不出比循環(huán)遍歷整個(gè)事物的“愚蠢”解決方案更好的方法,例如:


import numpy as np    


counter = 0

tmp = np.empty_like(df['sequence'].values, dtype=np.float)


for i in range(len(tmp)):

    if df['sequence'][i] == 4:

        tmp[i] = np.nan

    else:

        if df['sequence'][i] == 2:

            counter += 1

        tmp[i] = counter

df['desired_Id_output'] = tmp

當(dāng)然,這對(duì)于 20M 大小的 DataFrame 來說會(huì)很慢。改進(jìn)這一點(diǎn)的一種方法是通過使用numba以下命令進(jìn)行實(shí)時(shí)編譯:


import numba


@numba.njit

def foo(sequence):

    # put in appropriate modification of the above code block

    return tmp

并用參數(shù)調(diào)用它df['sequence'].values。


查看完整回答
反對(duì) 回復(fù) 2021-10-26
  • 2 回答
  • 0 關(guān)注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)