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

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

如何通過使用特定值對(duì)行進(jìn)行分組來拆分?jǐn)?shù)據(jù)幀并創(chuàng)建子數(shù)據(jù)幀?

如何通過使用特定值對(duì)行進(jìn)行分組來拆分?jǐn)?shù)據(jù)幀并創(chuàng)建子數(shù)據(jù)幀?

ITMISS 2022-09-13 19:30:21
我有一個(gè)像波紋管一樣的數(shù)據(jù)幀date,value2/10/19,342/11/19,342/12/19,342/13/19,342/14/19,342/15/19,342/16/19,342/17/19,02/18/19,02/19/19,02/20/19,222/21/19,222/22/19,222/23/19,222/24/19,02/25/19,02/26/19,02/27/19,02/28/19,13/1/19,23/2/19,23/3/19,13/4/19,03/5/19,03/6/19,03/7/19,33/8/19,33/9/19,33/10/19,0在每個(gè)間隔數(shù)據(jù)幀都有零值之后,我想以這種方式對(duì)行進(jìn)行分組,如果零連續(xù)出現(xiàn)兩次,它應(yīng)該創(chuàng)建一個(gè)子數(shù)據(jù)幀并保存文件。Output:df1     2/17/19,0    2/18/19,0    2/19/19,0df2    2/24/19,0    2/25/19,0    2/26/19,0    2/27/19,0df3    3/4/19,0    3/5/19,0    3/6/19,0我嘗試了很多方法來做到這一點(diǎn),但它失敗了。謝謝。
查看完整描述

2 回答

?
SMILET

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

您可以嘗試使用滾動(dòng):


def merge_intervals(intervals):

    sorted_intervals = sorted(intervals, key=lambda x: x[0])

    interval_index = 0

    #print(sorted_intervals)

    for  i in sorted_intervals:


        if i[0] > sorted_intervals[interval_index][1]:

            interval_index += 1

            sorted_intervals[interval_index] = i

        else:

            sorted_intervals[interval_index] = [sorted_intervals[interval_index][0], i[1]]

    #print(sorted_intervals)

    return sorted_intervals[:interval_index+1]


end_ids = df[df['value'].rolling(3).apply(lambda x: (x==0).all())==1].index


start_ids = end_ids-3


intervals = merge_intervals([*zip(starts_ids, end_ids)])


for i,interval in enumerate(intervals):

    df[interval[0]+1:interval[1]+1].to_csv('df_' + str(i) + '.csv')

不是最漂亮的代碼,但它可以工作,合并函數(shù)在這里找到:在Python中合并重疊間隔


查看完整回答
反對(duì) 回復(fù) 2022-09-13
?
慕虎7371278

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

找到值等于零的位置,并取長(zhǎng)度為 3 的滾動(dòng)總和。找出滾動(dòng)總和等于 3 的位置。結(jié)果將滯后 2 個(gè)空格,因此我們采用結(jié)果的 -1 平移和 -2 移位版本的結(jié)果的邏輯。or


mask = df['value'].eq(0).rolling(3).sum().eq(3)

mask |= mask.shift(-2) | mask.shift(-1)

為了得到組,我取邏輯否定的累積和。對(duì)于每個(gè)非零值,這將遞增,并停滯在零處。但是,每組零將不同。在我使用 時(shí),這并不重要,因?yàn)槲覍⑹褂檬鬃帜竵韮H查看首先滿足條件的行。groupbymask


但是,生成的組將是一組非連續(xù)的整數(shù)。因?yàn)槲也幌矚g這樣,所以我曾經(jīng)給這些組提供從零開始的唯一整數(shù)值。factorize


grp_masked = (~mask).cumsum()[mask].factorize()[0]

g = df[mask].groupby(grp_masked)

保存文件

for grp, d in g:

    d.to_csv(f'df_{grp}.csv', index=False)

創(chuàng)建詞典

df_dict = {grp: d for grp, d in g}

這將顯示原始數(shù)據(jù)幀以及顯示我們計(jì)算的一些內(nèi)容的其他列。


group_series = pd.Series(

    grp_masked, df.index[mask], pd.Int64Dtype()

)


df_ = df.assign(

    EqZero=df['value'].eq(0),

    Roll2=df['value'].eq(0).rolling(3).sum(),

    Is3=df['value'].eq(0).rolling(3).sum().eq(3),

    Shift=lambda d: d.Is3.shift(-2) | d.Is3.shift(-1),

    Mask=mask,

    PreGrp=(~mask).cumsum(),

    Grp=group_series

)

df_


       date  value  EqZero  Roll2    Is3  Shift   Mask  PreGrp   Grp

0   2/10/19     34   False    NaN  False  False  False       1  <NA>

1   2/11/19      0    True    NaN  False  False  False       2  <NA>

2   2/12/19      0    True    2.0  False  False  False       3  <NA>

3   2/13/19     34   False    2.0  False  False  False       4  <NA>

4   2/14/19     34   False    1.0  False  False  False       5  <NA>

5   2/15/19     34   False    0.0  False  False  False       6  <NA>

6   2/16/19     34   False    0.0  False  False  False       7  <NA>

7   2/17/19      0    True    1.0  False   True   True       7     0

8   2/18/19      0    True    2.0  False   True   True       7     0

9   2/19/19      0    True    3.0   True  False   True       7     0

10  2/20/19     22   False    2.0  False  False  False       8  <NA>

11  2/21/19     22   False    1.0  False  False  False       9  <NA>

12  2/22/19     22   False    0.0  False  False  False      10  <NA>

13  2/23/19     22   False    0.0  False  False  False      11  <NA>

14  2/24/19      0    True    1.0  False   True   True      11     1

15  2/25/19      0    True    2.0  False   True   True      11     1

16  2/26/19      0    True    3.0   True   True   True      11     1

17  2/27/19      0    True    3.0   True  False   True      11     1

18  2/28/19      1   False    2.0  False  False  False      12  <NA>

19   3/1/19      2   False    1.0  False  False  False      13  <NA>

20   3/2/19      2   False    0.0  False  False  False      14  <NA>

21   3/3/19      1   False    0.0  False  False  False      15  <NA>

22   3/4/19      0    True    1.0  False   True   True      15     2

23   3/5/19      0    True    2.0  False   True   True      15     2

24   3/6/19      0    True    3.0   True  False   True      15     2

25   3/7/19      3   False    2.0  False  False  False      16  <NA>

26   3/8/19      3   False    1.0  False  False  False      17  <NA>

27   3/9/19      3   False    0.0  False  False  False      18  <NA>

28  3/10/19      0    True    1.0  False  False  False      19  <NA>


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

添加回答

舉報(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)