首页 > 解决方案 > 根据列表中出现的值对 df 进行切片

问题描述

我有一个包含值的列表:

['A','B','C']

然后我有一个 df 那些索引包含该列表值:

      valuess
A       3
Ai      4
Aii     5 
Aiii    4
B       2
Bi      3
Bii
Biii

我想得到一个由数组中出现的值下方的下3个值组成的df,第一种情况是:

     valuess
A       3
Ai      4
Aii     5 
Aiii    4

并将dfs分组到一个列表中。

标签: pandas

解决方案


利用:

L = ['A','B','C']
df = df.groupby(np.cumsum(df.index.isin(L))).head(4)
print (df)
      valuess
A         3.0
Ai        4.0
Aii       5.0
Aiii      4.0
B         2.0
Bi        3.0
Bii       NaN
Biii      NaN

如果可能,索引的第一个值与列表中的值不匹配:

L = ['A','B','C']
arr = np.cumsum(df.index.isin(L))
df = df[arr != 0].groupby(arr[arr != 0]).head(4)

推荐阅读