根据列表值从数据框中提取行的正确方法

时间:2017-09-27 05:10:39

标签: python pandas

对于某些整数标签为group的数据框,根据组标签列表获取子数据框的最佳方法是什么?

map = [[9,13],[21,22]]

train

         group  feature1
id
0          24 -0.141691
1          22 -0.527684
2          13 -0.586026
3           9  0.233221
4          21 -0.545011

目前我正在使用for循环,这显然是次优的。

df = pd.DataFrame()
for i in map[0]:
  new_df = pd.concat([df,train[train.group==i]],axis=0)

new_df           

             group feature1
    id
    2          13 -0.586026
    3           9  0.233221

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找pd.Series.isin

df[df['group'].isin(np.concatenate(map))]

    group  feature1
id                 
1      22 -0.527684
2      13 -0.586026
3       9  0.233221
4      21 -0.545011

如果您希望map[0]相关联的记录:

df[df['group'].isin(map[0])]

    group  feature1
id                 
2      13 -0.586026
3       9  0.233221