Pandas 将groupby nunique设置为dataframe列

Pandas 将groupby nunique设置为dataframe列,pandas,Pandas,我有一个groupby,我正试图将它设置为数据帧中的一个新列,但是当我将一个列名设置为groupby的结果时,它的返回值NaN作为每一行的值。如果groupby设置为新值,然后打印,则该值将返回gropby值和每个值的nunique。我所面临的问题是否是由于需要在数据帧上解决某些索引问题 设置为列时: merged_df['noramlized_values'] = merged_df.groupby(['be_hash'])['id'].nunique() // normalized_val

我有一个groupby,我正试图将它设置为数据帧中的一个新列,但是当我将一个列名设置为groupby的结果时,它的返回值
NaN
作为每一行的值。如果groupby设置为新值,然后打印,则该值将返回gropby值和每个值的nunique。我所面临的问题是否是由于需要在数据帧上解决某些索引问题

设置为列时:

merged_df['noramlized_values'] = merged_df.groupby(['be_hash'])['id'].nunique()

// normalized_values
// NaN
test = merged_df.groupby(['be_hash'])['id'].nunique()

// ij32ndshufho23nd 1
设置为新值时:

merged_df['noramlized_values'] = merged_df.groupby(['be_hash'])['id'].nunique()

// normalized_values
// NaN
test = merged_df.groupby(['be_hash'])['id'].nunique()

// ij32ndshufho23nd 1
数据示例

id  date    be_hash     unique_call_rank    normalized_calls    What I want
1   10/20/20    10171   1                       3                   1
1   10/20/20    10171   1                       3                   0
2   10/20/20    10171   2                       3                   1   
3   10/23/20    10171   3                       3                   1
与列和列一起使用:

与列和列一起使用:


这是可行的,但结果与我想要的略有不同。我更新了我的问题,以反映将
[id]
略微调整为
[unique\u call\u rank]
后的效果,以及我希望实现的目标。基本上,任何存在重复的
唯一的\u call\u秩的实例都将只计算一个。从最初的询问中不确定这是否有误导性,但我希望实现的是什么。@cphill-那么样本数据中有一组
10171
,为什么预期输出
0
?在输出中应该是
2
be\u散列可以有重复的值,它可以通过重复的
id
和重复的
unique\u-call\u-rank
来识别,我希望为每个
be\u-hash
创建一个新的布尔列,唯一地计算
unique\u-call\u-rank
值,并在第一个值之后出现重复的情况下保留一个
0
instance@cphill-如果添加了新的示例数据中的行
110/20/20 10171 1
到最上面一行的预期输出如何?对于
我想要的
将返回
0
,因为已经存在具有相同属性的记录,并且该记录被计为
1
,但结果与我所寻找的略有不同。我更新了我的问题,以反映将
[id]
略微调整为
[unique\u call\u rank]
后的效果,以及我希望实现的目标。基本上,任何存在重复的
唯一的\u call\u秩的实例都将只计算一个。从最初的询问中不确定这是否有误导性,但我希望实现的是什么。@cphill-那么样本数据中有一组
10171
,为什么预期输出
0
?在输出中应该是
2
be\u散列可以有重复的值,它可以通过重复的
id
和重复的
unique\u-call\u-rank
来识别,我希望为每个
be\u-hash
创建一个新的布尔列,唯一地计算
unique\u-call\u-rank
值,并在第一个值之后出现重复的情况下保留一个
0
instance@cphill-如果添加了新的样本数据中的行
1 10/20/20 10171 1
到最上面一行的预期输出如何?对于
我想要的
将返回
0
,因为已存在具有相同属性的记录,并将其计为
1