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}