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

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

更改分組依據(jù)并value_counts輸出以映射到數(shù)據(jù)幀

更改分組依據(jù)并value_counts輸出以映射到數(shù)據(jù)幀

慕田峪7331174 2022-09-27 16:10:39
我有一個(gè)場景,我試圖按特定值過濾數(shù)據(jù)幀,并計(jì)算另一個(gè)標(biāo)識符存在的次數(shù)。然后,我將其轉(zhuǎn)換為字典并映射回?cái)?shù)據(jù)幀。我遇到的問題是,生成的字典無法映射回?cái)?shù)據(jù)幀,因?yàn)槲艺谙蜃值湟霃?fù)雜性(額外的鍵?),我不知道如何避免它。我想一個(gè)簡單的問題是:“如何在我的CELL_ID列上使用value_counts”,通過另一個(gè)名為Grid_Type的列進(jìn)行過濾,并將結(jié)果映射回每個(gè)CELL_ID的所有單元格?到目前為止,我在做什么這可以計(jì)算包含CELL_ID的單元格數(shù),但不允許我按Grid_Typedf['CELL_ID'].value_counts()z1 = z.to_dict()df['CELL_CNT'] = df['CELL_ID'].map(z1)這個(gè)簡單示例的字典輸出如下所示:7015988: 1, 7122961: 1, 6976792: 1我的代碼不好這是我迄今為止一直在研究的 - 我希望能夠返回計(jì)數(shù),并按Grid_Type過濾。例如,我希望能夠計(jì)算我在每個(gè)CELL_ID中看到“Spot”的次數(shù)。z = df[df.Grid_Type == 'Spot'].groupby('CELL_ID')['Grid_Type'].value_counts()z1 = z.to_dict()df['SPOT_CNT'] = df['CELL_ID'].map(z1)似乎在我嘗試過濾的示例中,字典返回了一個(gè)更復(fù)雜的結(jié)果,其中包括Grid_Type。問題是,我只想將計(jì)數(shù)映射到Cell_ID。(7133691, 'Spot'): 3, (7133692, 'Spot'): 3, (7133693, 'Spot'): 2示例數(shù)據(jù)+---------+-----------+| CELL_ID | Grid_Type |+---------+-----------+|     001 | Spot      ||     001 | Square    ||     001 | Spot      ||     001 | Square    ||     001 | Square    ||     002 | Spot      ||     002 | Square    ||     002 | Square    ||     003 | Square    ||     003 | Spot      ||     003 | Spot      ||     003 | Spot      |+---------+-----------+預(yù)期結(jié)果+---------+-----------+----------+| CELL_ID | Grid_Type | SPOT_CNT |+---------+-----------+----------+|     001 | Spot      |        2 ||     001 | Square    |        2 ||     001 | Spot      |        2 ||     001 | Square    |        2 ||     001 | Square    |        2 ||     002 | Spot      |        1 ||     002 | Square    |        1 ||     002 | Square    |        1 ||     003 | Square    |        3 ||     003 | Spot      |        3 ||     003 | Spot      |        3 ||     003 | Spot      |        3 |+---------+-----------+----------+感謝您提供的任何幫助/
查看完整描述

2 回答

?
長風(fēng)秋雁

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

df = pd.read_csv('spot.txt', sep=r"[ ]{1,}", engine='python', dtype='object')


print(df)


    CELL_ID Grid_Type

0   001 Spot

1   001 Square

2   001 Spot

3   001 Square

4   001 Square

5   002 Spot

6   002 Square

7   002 Square

8   003 Square

9   003 Spot

10  003 Spot

11  003 Spot


df_gb = df['Grid_Type'].groupby([df['CELL_ID']]).value_counts()


print(df_gb)


    CELL_ID  Grid_Type

001      Square       3

         Spot         2

002      Square       2

         Spot         1

003      Spot         3

         Square       1

Name: Grid_Type, dtype: int64




df_gb_dict = df_gb.to_dict()


count_list = []


for idx, row in df.iterrows():

    for k, v in df_gb_dict.items():

        if k[0] == row['CELL_ID'] and k[1] == row['Grid_Type'] and row['Grid_Type'] == 'Spot':

            count_list.append([k[0], k[1], v])

        if k[0] == row['CELL_ID'] and k[1] == row['Grid_Type'] and row['Grid_Type'] == 'Square':

            count_list.append([k[0], k[1], df_gb_dict[(row['CELL_ID'], 'Spot')]])



new_df = pd.DataFrame(count_list, columns=['CELL_ID',  'Grid_Type', 'SPOT_CNT'])


new_df.sort_values(by='CELL_ID', inplace=True)


new_df.reset_index(drop=True)


print(new_df)


  CELL_ID Grid_Type  SPOT_CNT

0      001      Spot         2

1      001    Square         2

2      001      Spot         2

3      001    Square         2

4      001    Square         2

5      002      Spot         1

6      002    Square         1

7      002    Square         1

8      003    Square         3

9      003      Spot         3

10     003      Spot         3

11     003      Spot         3


查看完整回答
反對 回復(fù) 2022-09-27
?
慕姐8265434

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

似乎你有一個(gè)答案,但我會(huì)用transe()來解決這個(gè)問題:

# set it up

df = pd.read_clipboard()

print(df)


    CELL_ID Grid_Type

0         1      Spot

1         1    Square

2         1      Spot

3         1    Square

4         1    Square

5         2      Spot

6         2    Square

7         2    Square

8         3    Square

9         3      Spot

10        3      Spot

11        3      Spot

df['SPOT_CNT'] = df.groupby('CELL_ID')['Grid_Type'].transform(lambda x: sum(x == 'Spot'))

print(df)


    CELL_ID Grid_Type  SPOT_CNT

0         1      Spot         2

1         1    Square         2

2         1      Spot         2

3         1    Square         2

4         1    Square         2

5         2      Spot         1

6         2    Square         1

7         2    Square         1

8         3    Square         3

9         3      Spot         3

10        3      Spot         3

11        3      Spot         3

在函數(shù)內(nèi)部:

- 它返回 bool if value() ==

- 對于每個(gè)組,將 bools

相加 最后轉(zhuǎn)換,根據(jù)文檔,行為如下:lambdax'Spot'sum()True


DataFrame.transform(self, func, axis=0, *args, **kwargs) → 'DataFrame'[source]

     "Call func on self producing a DataFrame with transformed values."  

     "Produced DataFrame will have same axis length as self." <----

...

希望這是有幫助的。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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