Python Pandas`transform(set)`引发异常

Python Pandas`transform(set)`引发异常,python,pandas,dataframe,set,transform,Python,Pandas,Dataframe,Set,Transform,我正试图通过集进行转换,但遇到了一个异常。Transform可用于“sum”和许多其他聚合函数,但不能用于set或list >>将熊猫作为pd导入 >>>df=pd.DataFrame({“a”:[1,2,1,],“b”:[1,1,2]}) >>>df a b 0 1 1 1 2 1 2 1 2 >>>df.groupby(“a”).b.transform(集合) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/Users/avloss/conda/lib/python

我正试图通过
进行转换,但遇到了一个异常。Transform可用于“sum”和许多其他聚合函数,但不能用于
set
list

>>将熊猫作为pd导入
>>>df=pd.DataFrame({“a”:[1,2,1,],“b”:[1,1,2]})
>>>df
a b
0  1  1
1  2  1
2  1  2
>>>df.groupby(“a”).b.transform(集合)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/Users/avloss/conda/lib/python3.7/site packages/pandas/core/groupby/generic.py”,第1032行,在转换中
s=klass(res,索引器)
文件“/Users/avloss/conda/lib/python3.7/site packages/pandas/core/series.py”,第282行,在__
“{0!r}类型是无序的”“。格式(数据._类._名称._)
TypeError:“set”类型无序
我所期待的是:

ab
0  1  {1, 2}
1  2     {1}
2  1  {1, 2}

我们有
唯一的
,注意
唯一的
甚至会保留您输入的原始顺序

df.groupby('a').b.transform('unique')
0    [1, 2]
1       [1]
2    [1, 2]
Name: b, dtype: object
更新,如果以上不工作 ,请在下面尝试

df.groupby('a').b.transform(lambda x : [set(x)]*len(x))
0    {1, 2}
1       {1}
2    {1, 2}
Name: b, dtype: object

我能想到的最简单的方法是将
aggregate
作为
set
并映射回去

df['new_col'] = df['a'].map(df.groupby('a')['b'].agg(set))
print(df)


不幸的是,至少在pandas 1.0.1:@geo909中,这似乎不再起作用了。其他一些关于
df.groupby('a').b.transform(lambda x:[set(x)]*len(x))0{1,2}1{1,2}的工作名称:b,数据类型:object
   a  b new_col
0  1  1  {1, 2}
1  2  1     {1}
2  1  2  {1, 2}