根据Pandas中的Column值选择行间隔

时间:2018-06-15 19:43:02

标签: python pandas dataframe numpy-slicing

大家好我有一个看起来像这样的数据集

transferid   value     type 
  5545        100       X
  5123        40        A
  5566        35        A
  5675        700       X
  5235        1100      A
  5616        350       A
  5772        170       X

它有索引用于任何目的,我想做的是在行中切片数据集,生成像这样的新数据集

df1=
transferid   value     type 
  5545        100       X
  5123        40        A
  5566        35        A
  5675        700       X

df2=
transferid   value     type 
  5675        700       X
  5235        1100      A
  5616        350       A
  5772        170       X

包括这样的值。是否有可能在单个切片上执行此操作?我尝试收集索引并使用df.loc来设置切片间隔,但我没有用这种方法取得任何成功。数据集可以从任何类型的传输开始,但我需要在它之间进行切片,并且每次找到传输类型X时,如果它在末尾找不到其他类型X,则切片直到结束。

感谢您提前提供任何帮助

1 个答案:

答案 0 :(得分:1)

IIUC:

i = np.where(df.type == "X")[0]
pd.concat({j: df.iloc[x:y] for j, (x, y) in enumerate(zip(i, i[1:] + 1))})

     transferid  value type
0 0        5545    100    X
  1        5123     40    A
  2        5566     35    A
  3        5675    700    X
1 3        5675    700    X
  4        5235   1100    A
  5        5616    350    A
  6        5772    170    X