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

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

如何根據(jù)從該數(shù)據(jù)框派生的組的屬性將元素分配給熊貓數(shù)據(jù)框的列?

如何根據(jù)從該數(shù)據(jù)框派生的組的屬性將元素分配給熊貓數(shù)據(jù)框的列?

三國(guó)紛爭(zhēng) 2022-06-28 11:11:04
假設(shè)我按如下方式導(dǎo)入 pandas 和 numpy:import pandas as pdimport numpy as np并構(gòu)建以下數(shù)據(jù)框:df = pd.DataFrame({'Alpha' ['A','A','A','B','B','B','B','C','C','C','C','C'],'Beta' : np.NaN})...這給了我這個(gè):    Alpha  Beta0      A   NaN1      A   NaN2      A   NaN3      B   NaN4      B   NaN5      B   NaN6      B   NaN7      C   NaN8      C   NaN9      C   NaN10     C   NaN11     C   NaN如何使用 pandas 獲取以下數(shù)據(jù)框?df_u = pd.DataFrame({'Alpha':['A','A','A','B','B','B','B','C','C','C','C','C'],'Beta' : [1,2,3,1,2,2,3,1,2,2,2,3]})即:   Alpha  Beta0      A     11      A     22      A     33      B     14      B     25      B     26      B     37      C     18      C     29      C     210     C     211     C     3一般來(lái)說,我想要實(shí)現(xiàn)的目標(biāo)可以用以下邏輯來(lái)描述:假設(shè)我們將 df 按 Alpha 分組。對(duì)于每個(gè)組,對(duì)于組中的每一行......如果行的索引等于組中行的最小索引,則將該行的 Beta 賦值為 1,否則,如果行的索引等于組中行的最大索引,則為該行分配 3 到 Beta,否則將 2 分配給該行的 Beta。
查看完整描述

3 回答

?
德瑪西亞99

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

讓我們使用重復(fù)的:


df.loc[~df.duplicated('Alpha', keep='last'), 'Beta'] = 3

df.loc[~df.duplicated('Alpha', keep='first'), 'Beta'] = 1

df['Beta'] = df['Beta'].fillna(2)

print(df)

輸出:


   Alpha  Beta

0      A   1.0

1      A   2.0

2      A   3.0

3      B   1.0

4      B   2.0

5      B   2.0

6      B   3.0

7      C   1.0

8      C   2.0

9      C   2.0

10     C   2.0

11     C   3.0


查看完整回答
反對(duì) 回復(fù) 2022-06-28
?
郎朗坤

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

假設(shè)“Alpha”列已排序,您可以這樣做


df["Beta"] = 2

df.loc[~(df["Alpha"] == df["Alpha"].shift()), "Beta"] = 1

df.loc[~(df["Alpha"] == df["Alpha"].shift(-1)), "Beta"] = 3

df


查看完整回答
反對(duì) 回復(fù) 2022-06-28
?
米琪卡哇伊

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

方法一


使用np.select:


mask1=df['Alpha'].ne(df['Alpha'].shift())

mask3=df['Alpha'].ne(df['Alpha'].shift(-1))

mask2=~(mask1|mask3)

cond=[mask1,mask2,mask3]

values=[1,2,3]

df['Beta']=np.select(cond,values)

print(df)

   Alpha  Beta

0      A     1

1      A     2

2      A     3

3      B     1

4      B     2

5      B     2

6      B     3

7      C     1

8      C     2

9      C     2

10     C     2

11     C     3

條件列表的詳細(xì)信息:


print(mask1)

0      True

1     False

2     False

3      True

4     False

5     False

6     False

7      True

8     False

9     False

10    False

11    False

Name: Alpha, dtype: bool

print(mask2)

0     False

1      True

2     False

3     False

4      True

5      True

6     False

7     False

8      True

9      True

10     True

11    False

Name: Alpha, dtype: bool

print(mask3)

0     False

1     False

2      True

3     False

4     False

5     False

6      True

7     False

8     False

9     False

10    False

11     True

Name: Alpha, dtype: bool

方法二


使用groupby:


def assign_value(x):

    return pd.Series([1]+[2]*(len(x)-2)+[3])

new_df=df.groupby('Alpha').apply(assign_value).rename('Beta').reset_index('Alpha') 

print(new_df)

  Alpha  Beta

0     A     1

1     A     2

2     A     3

0     B     1

1     B     2

2     B     2

3     B     3

0     C     1

1     C     2

2     C     2

3     C     2

4     C     3


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

添加回答

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