Pandas 将groupby nunique设置为dataframe列
我有一个groupby,我正试图将它设置为数据帧中的一个新列,但是当我将一个列名设置为groupby的结果时,它的返回值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
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