分组熊猫列的有效交集

时间:2018-10-18 17:11:14

标签: python pandas

我有一个名为use的高大熊猫数据框,其列为ID, Date, ...。每一行都是唯一的,但是每个ID有很多行,每个日期都有一个行ID。

ID    Date    Other_data
1     1-1-01  10
2     1-1-01  23
3     1-1-01  0
1     1-2-01  11
3     1-2-01  1
1     1-3-01  9
2     1-3-01  20
3     1-3-01  2

我还有一个唯一ID列表,ids=use['ID'].drop_duplicates

我想找到所有日期的交集,也就是说,仅找到每个ID都有数据的日期。此玩具问题的最终结果应为[1-1-01, 1-3-01]

目前,我循环浏览,以ID设置子集并采用交点。粗略地说,它看起来像这样:

dates = use['Date'].drop_duplicates()
for i in ids:
    id_dates = use[(use['ID'] == i)]['Date'].values
    dates = set(dates).intersection(id_dates)

这让我震惊,效率低下。识别每个ID包含数据的日期的更有效方法是什么?

非常感谢!

2 个答案:

答案 0 :(得分:2)

使用$colour_no_hash = str_replace('#', '', $colourvalue); echo $colour_no_hash; // Customize the TinyMCE Color Palette. Attempting to add a colour for 'Custom Login'. Other 2 colours work. wptb_tinymce_options = function ($options) use ($colour_no_hash) { $custom_colours = '"000000", "Black", "00AC9F", "Custom Teal", "' . $colour_no_hash . '", "Custom Login"'; $options['textcolor_map'] = '['.$custom_colours.']'; return $options; }; ,当值为0时应将其作为目标行。使用crosstab。找到它

df.eq(0).any(1)

答案 1 :(得分:1)

找到每个日期的唯一ID,然后检查是否所有这些唯一ID。

gp = df.groupby('Date').ID.nunique()
gp[gp == df.ID.nunique()].index.tolist()

#['1-1-01', '1-3-01']