找到特定的列值后如何将一个数据帧拆分为多个数据帧

时间:2018-11-04 18:20:13

标签: python pandas dataframe split

我有两列“ ExplB”和“ remP”的数据框。 remP中的值只能为0或1。在列remP中满足值1之后,我试图将数据帧拆分为多个数据帧。如何在Python中执行此操作?

我该如何解决? enter image description here

data = {'ExplB':[0,0,0,0.2,0.2,0.15,0,0,0,0,0,0,0,0,0],'remP':[0,0,0,1,0,0,0,0,1,0,0,0,1,0,0]}
df = pd.DataFrame(data, columns = ['ExplB', 'remP'])

1 个答案:

答案 0 :(得分:1)

您可以使用np.split

# find the index where df['remP']==1
idx = df[df['remP']==1].index

# split your df on that index
dfs = np.split(df, idx)

[   ExplB  remP
 0    0.0     0
 1    0.0     0
 2    0.0     0,    ExplB  remP
 3   0.20     1
 4   0.20     0
 5   0.15     0
 6   0.00     0
 7   0.00     0,     ExplB  remP
 8     0.0     1
 9     0.0     0
 10    0.0     0
 11    0.0     0,     ExplB  remP
 12    0.0     1
 13    0.0     0
 14    0.0     0]

或者如果您想在该索引之后拆分df,请执行idx + 1

idx = df[df['remP']==1].index
dfs = np.split(df, idx+1)

[   ExplB  remP
 0    0.0     0
 1    0.0     0
 2    0.0     0
 3    0.2     1,    ExplB  remP
 4   0.20     0
 5   0.15     0
 6   0.00     0
 7   0.00     0
 8   0.00     1,     ExplB  remP
 9     0.0     0
 10    0.0     0
 11    0.0     0
 12    0.0     1,     ExplB  remP
 13    0.0     0
 14    0.0     0]