Python 根据所有日期查找通用ID

Python 根据所有日期查找通用ID,python,pandas,time-series,Python,Pandas,Time Series,我在一个数据框中有两列。身份证和日期。我想找到所有给定日期的通用ID。有很多方法/解决方案可以解决这个问题。我想知道python、pandas或numpy中是否有内置函数可以帮我完成这项工作。让我举例说明: Date Id 2019-04-01 334 2019-04-01 335 2019-04-01 336 2019-04-02 334 2019-04-02 335 在这种情况下,答案是: Date Id 2019-04-01 334

我在一个数据框中有两列。身份证和日期。我想找到所有给定日期的通用ID。有很多方法/解决方案可以解决这个问题。我想知道python、pandas或numpy中是否有内置函数可以帮我完成这项工作。让我举例说明:

  Date       Id
2019-04-01   334
2019-04-01   335
2019-04-01   336
2019-04-02   334
2019-04-02   335
在这种情况下,答案是:

  Date       Id
2019-04-01   334
2019-04-01   335
2019-04-02   334
2019-04-02   335

重塑并删除缺少值的列,以便仅获取每个组中存在的值:

df = (df.groupby(['Date','Id'])
        .size()
        .unstack()
        .dropna(axis=1)
        .stack()
        .index
        .to_frame(index=False))
print (df)
         Date   Id
0  2019-04-01  334
1  2019-04-01  335
2  2019-04-02  334
3  2019-04-02  335

您可以使用条件选择:

df.loc[df['column'] == value]

其中,
column
是列的名称,
value
是要搜索的值。这将返回另一个仅包含所选行的数据帧。您可以使用其他条件运算符,如
=也使用同样的方法。

这里有一种方法
转换
+
nunique

df[df.groupby(['Id'])['Date'].transform('nunique')==df.Date.nunique()]
Out[208]: 
         Date   Id
0  2019-04-01  334
1  2019-04-01  335
3  2019-04-02  334
4  2019-04-02  335