Python 基于行索引的数据帧分割

Python 基于行索引的数据帧分割,python,pandas,Python,Pandas,如何拆分数据帧 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.6458

如何拆分数据帧

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

我相信您可以使用for second
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
或用于“按标签选择”:

print (df.loc[df.index.difference(idx)])
        first    second
bat  0.544883  0.891773
baz  0.602763  0.437587
我相信您可以使用for second
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
或用于“按标签选择”:

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

我认为您的预期subDf1输出不正确,因为它与的SubDF2可能重复项相同。我认为您的预期subDf1输出不正确,因为它与的SubDF2可能重复项相同