从数据框中提取数据

时间:2019-04-29 08:30:44

标签: python python-3.x pandas

我有一个要从数据集中检索数据的列表。

以下是列表:

packed = [1, 5, 8, 2, 3, 3, 7, 3, 7, 7, 4, 6, 3]

这是数据集

enter image description here

有两个数量较多的商品,即3和7

我想提取那些不在打包列表中的行。在这种情况下,它的两倍为7(剩余3已在列表中) 我怎样才能做到这一点?我试过了,但这不起作用

new_df= data[~data["Pid"].isin(packed)].reset_index(drop=True)

1 个答案:

答案 0 :(得分:1)

GroupBy.cumcount与助手DataFrame一起使用,将merge与左联接和indicator=True一起使用,最后由boolean indexing进行过滤:

packed = [1, 5, 8, 2, 3, 3, 7, 3, 7, 7, 4, 6, 3]
df1 = pd.DataFrame({'Pid':packed})
df1['g'] = df1.groupby('Pid').cumcount()
print (df1)
    Pid  g
0     1  0
1     5  0
2     8  0
3     2  0
4     3  0
5     3  1
6     7  0
7     3  2
8     7  1
9     7  2
10    4  0
11    6  0
12    3  3

data['g'] = data.groupby('Pid').cumcount()
new_df = data[data.merge(df1, indicator=True, how='left')['_merge'].eq('left_only')]
相关问题