首页 > 解决方案 > python数据框相关问题

问题描述

对于以下数据框,

date1         date2        userid
2020-10-20  2020-10-22     101
2020-09-10  2020-10-11     101
2020-10-20  2020-10-23     101
2020-12-05  2020-12-06     102
2020-12-04  2020-12-06     102

我能得到这样的输出吗

   date1            date2       userid
 2020-10-20     2020-10-22       101
 2020-09-10     2020-10-11       101
 2020-12-05     2020-12-06       102

date1 和 date2 的关系应该是 1:1,反之亦然。

标签: pythonpandasdataframe

解决方案


您可以按每列分组并获取第一项:

data_string = io.StringIO('''date1         date2        userid
2020-10-20  2020-10-22     101
2020-09-10  2020-10-11     101
2020-10-20  2020-10-23     101
2020-12-05  2020-12-06     102
2020-12-04  2020-12-06     102''')
df = pd.read_csv(data_string,sep=r'\s+')
df = df.groupby(['date2'],as_index=False).first()
df = df.groupby(['date1'],as_index=False).first()

df
>>>
    date1   date2   userid
0   2020-09-10  2020-10-11  101
1   2020-10-20  2020-10-22  101
2   2020-12-05  2020-12-06  102

请注意,此数据框最终已排序


推荐阅读