我的数据框有问题。我想从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而不是实际结果放在新列中?
有人可以帮助我,我做错了吗?
答案 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”不是现有列,因此将创建一个新列。