Разделить фрейм данных на два непересекающихся субкадра на основе индекса строки - PullRequest
1 голос
/ 21 октября 2019

Как разделить фрейм данных

import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame({'first':np.random.rand(4),'second':np.random.rand(4)},index=['foo','bar','baz','bat'])
print(df)
        first    second
foo  0.548814  0.423655
bar  0.715189  0.645894
baz  0.602763  0.437587
bat  0.544883  0.891773

на два следующих непересекающихся фрейма данных

        first    second
foo  0.548814  0.423655
bar  0.715189  0.645894

     first    second
baz  0.602763  0.437587
bat  0.544883  0.891773

, используя индексы для первого фрейма данных?

Я специально ищу такой метод, как

subDf1,subDf2 = pd.split(df,['foo','bar'])

, где

print(subDf1)
   first    second
foo  0.548814  0.423655
bar  0.715189  0.645894

и

print(subDf2 )
  first    second
baz  0.602763  0.437587
bat  0.544883  0.891773

1 Ответ

0 голосов
/ 21 октября 2019

Я полагаю, вы можете использовать Index.isin с boolean indexing в секунду DataFrame:

idx = ['foo','bar']

print (df.loc[idx])
        first    second
foo  0.548814  0.423655
bar  0.715189  0.645894

print (df[~df.index.isin(idx)])
        first    second
baz  0.602763  0.437587
bat  0.544883  0.891773

Или Index.difference с DataFrame.loc для выбора по меткам:

print (df.loc[df.index.difference(idx)])
        first    second
bat  0.544883  0.891773
baz  0.602763  0.437587
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...