熊猫-DataFrame groupby中的最大值返回NAN

时间:2020-06-25 09:53:10

标签: python pandas max

我的数据框有问题。我想从DataFrame的groupedby列中获取最大值,但是我只得到NaNs ...

我的数据框

  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函数将NAN而不是实际结果放在新列中?

有人可以帮助我,我做错了吗?

2 个答案:

答案 0 :(得分:0)

这是一个类似的示例,用于获取每个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']

答案 1 :(得分:0)

您写了df [“ new”]。 由于“ new”不是现有列,因此将创建一个新列。