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

У меня есть датафрейм с 500 столбцами и x строками.Теперь у меня есть вектор t_1 и вектор t_2.Вектор t_1 означает начало события и может содержать 1 или более значений, а t_2 - конец события.Оба они указывают расположение строки в кадре данных.

пример:

 t1=[4202 6453]
 t2=[6203 6492]

Я хочу теперь разбить кадр данных на части и сохранить его как два разных кадра данных.Строка 4202–6203 - это фрейм данных1, а строка 6453–6492 - это фрейм данных 2. Это будет весь фрейм данных:

      A   B   C   D
1     5   2   3   4 
..    .   .   .   .
4202  3   4   2   1
4203  2   1   2   2
..    .   .   .   .
6203  1   2   3   1
..    .   .   .   .
6453  5   1   4   3
..    .   .   .   .
6492  1   2   3   4

, и это должен быть вывод: Фрейм данных 1:

      A   B   C   D
4202  3   4   2   1
..    .   .   .   .
6203  1   2   3   1

и датафрейм 2:

      A   B   C   D
6453  5   1   4   3
..    .   .   .   .
6492  1   2   3   4

Спасибо, R

1 Ответ

0 голосов
/ 04 октября 2018

Я считаю, что вам нужно list comprehension с loc и zip для списка DataFrame s:

t1=[4202, 6453]
t2=[6203, 6492]

dfs = [df.loc[i:j] for i, j in zip(t1, t2)]

print (dfs[0])
print (dfs[1])

Образец:

np.random.seed(142)

df = pd.DataFrame({'column':np.random.rand(8)})
print (df)
     column
0  0.902062
1  0.557808
2  0.655985
3  0.832471
4  0.199884
5  0.127254
6  0.771439
7  0.432289

t1=[1, 3]
t2=[2, 5]

dfs = [df.loc[i:j] for i, j in zip(t1, t2)]
print (dfs)
[     column
1  0.557808
2  0.655985,      column
3  0.832471
4  0.199884
5  0.127254]

print (dfs[0])
     column
1  0.557808
2  0.655985

print (dfs[1])
     column
3  0.832471
4  0.199884
5  0.127254
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...