簡體   English   中英

Pandas - 最大來自 DataFrame groupby return NAN

[英]Pandas - max from DataFrame groupby return NAN

我的 dataframe 有問題。 我想從 DataFrame 分組的一列中獲取最大值,但我只得到 NaN...

我的 Dataframe

  kod_ow      kod_sw  ... pr_kierunkowa           infrast_h_bloku
0     06  061/200324  ...               None        0.000000
1     06  061/200324  ...               None        0.000000
2     06  061/200324  ...               None      209.365495
3     06  061/200324  ...               None        0.000000
4     06  061/200324  ...               None        0.000000
5     06  061/200324  ...               None      209.365495

[6 rows x 8 columns]

我試過:

df['new'] = df.groupby(by=['kod_ow', 'kod_sw', 'nr_ks', 'nr_ks_pr', 'nazwa_zabiegu_icd_9', 'nazwa_zabiegu','pr_kierunkowa'])['infrast_h_bloku'].transform('max')

我的結果是:

  kod_ow      kod_sw  nr_ks  ... infrast_h_bloku osobodzien new
0     06  061/200324   3193  ...        0.000000        0.0 NaN
1     06  061/200324   3193  ...        0.000000        0.0 NaN
2     06  061/200324   3193  ...      209.365495        0.0 NaN
3     06  061/200324  54809  ...        0.000000        0.0 NaN
4     06  061/200324  54809  ...        0.000000        0.0 NaN
5     06  061/200324  54809  ...      209.365495        0.0 NaN

問題是,為什么 max function 將 NAN 放入新列而不是實際結果???

有人可以幫助我,我做錯了什么嗎?

這是為每個 id 獲取最大 col2 行的類似示例。

# importing pandas as pd 
import pandas as pd 
   
# dictionary of lists 
dict = {'id':[1, 1, 2, 2], 
        'col1':[21, 40, 81, 98], 
        'col2':[30, 20, 80, 91],
        'col3':[90, 10, 41, 99]
       } 
  
# creating a dataframe from a dictionary  
df = pd.DataFrame(dict) 
  
df[df.groupby(by=['id'])['col2'].transform(max) == df['col2']]

所以你可以在你的情況下使用它,如下所示:

 df.groupby(by=['kod_ow', 'kod_sw', 'nr_ks', 'nr_ks_pr', 'nazwa_zabiegu_icd_9', 'nazwa_zabiegu','pr_kierunkowa'])['infrast_h_bloku'].transform(max)==df['infrast_h_bloku']

你寫了 df["new"]。 由於“新”不是現有列,因此會創建一個新列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM