我的数据框看起来像这样:
df:
Col1 Col2
A 123
B 154
A 123
C 199
A 201
B 199
C 123
如果,我按Col1分组,那么我想显示所有共享Col2共有值的组。
当前输出如下:
123 [A,C,A]
199 [B,C]
但是,如果有重复的'col1',它应该总是从列表中删除它。因此,输出应类似于:
123 [A,C]
199 [B,C]
在这里,重复值A仅在删除重复项时显示一次。
答案 0 :(得分:1)
您可以先groupby
col2
df.groupby('Col2').Col1.apply(list).loc[lambda x : x.str.len()>1]
Out[350]:
Col2
123 [A, C]
199 [C, B]
Name: Col1, dtype: object
答案 1 :(得分:0)
如果只希望过滤映射到多个字母的值,则可以使用pd.Series.duplicated
,后跟groupby
:
res = df.loc[df['Col2'].duplicated(keep=False)]\
.groupby('Col2')['Col1'].apply(list)
print(res)
Col2
123 [A, C]
199 [C, B]
Name: Col1, dtype: object