假设我有一个 Dataframe ,如下所示
df = pd.DataFrame(columns=['ID', 'job', 'eligible', "date"])
df['ID'] = ['1', '2', '3', '4', '5', '6', '7', '8']
df['job'] = ['waitress', 'doctor', 'benevolent', 'nurse', 'hairstylist', 'banker', 'waitress', 'waitress']
df['eligible'] = [No, Yes, No, Yes, No, No, No, No]
df['date'] = ['1.1.2016', '31.12.2015', '1.1.2016', '31.12.2015', '1.1.2016', '31.12.2015', '1.1.2015', '1.1.2015']
df["date"] = pd.to_datetime(df["date"])
我想将数据与匹配的工作、资格和不匹配的年份(2015年与2016年)配对。这只是一对一的匹配,这意味着一部分数据可能有几个匹配或根本没有。如果有几个匹配,将随机选择匹配的配对。
因此,我希望得到如下结果:
df_paired = (columns=['ID', 'job', 'eligible', "paired_ID"])
df['ID'] = ['1']
df['paired_ID'] = ['8']
df['job'] = ['waitress']
df['eligible'] = [No]
我尝试了很多解决方案,但主要问题是一对一的匹配,以获得独特的匹配,甚至坚韧可能有几个匹配的一个观察...
1条答案
按热度按时间unguejic1#
此解决方案使用
groupby
方法查找共享job
和eligible
值的行。然后标识共享相同year
的子组。选择随机索引以选择要分配给paired_ID
的ID
。