给定如下所示的DataFrame:
userId | preference
-------------------
1 | tea
1 | coffee
2 | apple
2 | apple
2 | apple
3 | tea
3 | coffee
3 | cookie
4 | banana
4 | cake
我需要将数据帧拆分为两个数据帧,这两个数据帧具有相等的userIds分布,但具有独特的首选项。例如,userId 1
可以同时进入两个DataFrames,因为用户至少有两个唯一的首选项。但是,userId 2
将被忽略,因为只有一个唯一的首选项。
总而言之,我希望从原始DF生成两个DataFrame,如下所示:
DataFrame1
userId | preference
-----------------
1 | tea
3 | tea
3 | coffee
4 | banana
DataFrame 2
userId | preference
-----------------
1 | coffee
3 | cookie
4 | cake
换句话说,
DataFrame1['userId'].unique() == DataFrame2['userId'].unique()
注意: DataFrame2获取DataFrame1没有获取的“剩余”行。
我能够只为具有两个或更多唯一首选项的用户过滤数据,方法是使用
df.groupby('userId').filter(lambda x: x['preference'].nunique()>1)
但坚持让两个DF的DataFrame以相等的userIds拆分
转载请注明出处:http://www.jubohx.com/article/20230517/1360937.html