Как разбить фрейм данных на несколько фреймов после того, как определенное значение столбца найдено - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть датафрейм из двух столбцов «ExplB» и «remP». Значения в remP могут быть только 0 или 1. Я пытаюсь разбить фрейм данных на несколько фреймов после того, как значение 1 встречается в столбце remP. Как я могу сделать эту операцию в Python?

Как я могу решить это? введите описание изображения здесь

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 голосов
/ 04 ноября 2018

вы можете использовать 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...