如何通过列中的唯一值对熊猫数据框进行子集

时间:2019-07-03 07:49:22

标签: python pandas dataframe subset

想要找到一种更简单的方法来对数据框进行子集并将其创建为新数据框

A011 = DF[DF['id']=="A011"]
A012 = DF[DF['id']=="A012"]
A013 = DF[DF['id']=="A013"]
A014 = DF[DF['id']=="A014"]

这有效但效率低下。我实际上有162个唯一值。

DF = pd.DataFrame({'id': ["A011", "A012", "A012", "A012","A011", "A012", "A012", "A012"],\
'value': [1, 2, 3, 4, 1, 2, 3, 4]})
A011 = DF[DF['id']=="A011"]
A012 = DF[DF['id']=="A012"]
A013 = DF[DF['id']=="A013"]
A014 = DF[DF['id']=="A014"]

所需的输出

    id  value
0   A011    1
4   A011    1

    id  value
1   A012    2
5   A012    2

1 个答案:

答案 0 :(得分:0)

df = pd.DataFrame({'id': ["A011", "A012", "A012", 
"A012","A011", "A012", "A012", "A012"], 'value': [1, 2, 3, 4, 1, 2, 3, 4]})    
result = [x.reset_index(drop=True) for _, x in df.groupby(['id'])]

由于您要基于唯一的id列创建数据框,因此我们可以按id列对数据框进行分组,该列将为每个组返回一个数据框。在创建的数据帧上使用reset_index删除原始索引。