• 主页
  • DataFrames :将DataFrame拆分成两个Pandas,平均分配具有唯一值的ids

DataFrames :将DataFrame拆分成两个Pandas,平均分配具有唯一值的ids

给定如下所示的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