剩下的pandas.DataFrame最聪明的方法是什么?

时间:2018-06-24 08:30:30

标签: python pandas dataframe

这里是 InputStream in = new BufferedInputStream(urlConnection); pandas.DataFrame

df

我选择了一些行,并通过| Foo | Bar | |-----|-----| | 0 | A | | 1 | B | | 2 | C | | 3 | D | | 4 | E | 定义了一个新的数据框。

df1 = df.iloc[[1,3],:]

获取其余| Foo | Bar | |-----|-----| | 1 | B | | 3 | D | 的最佳方法是什么,如下所示。

df

3 个答案:

答案 0 :(得分:1)

我认为Foo可被视为唯一索引。

首先从Foo中选择df1个值:

idx = df1['Foo'].values

然后过滤原始数据框:

df2 = df[~df['Foo'].isin(idx)]

答案 1 :(得分:1)

基于快速集合的差异

df2 = df.loc[df.index.difference(df1.index)]
df2

   Foo Bar
0    0   A
2    2   C
4    4   E

只要您的index值是唯一的,就可以使用。

答案 2 :(得分:1)

如果我正确理解,您想获取一个数据框,从中选择一些行并将其存储在变量df2中,然后在df中选择不在{{ 1}}。

在这种情况下,您可以进行df2

  • df[~df.isin(df2)].dropna()根据条件x对数据帧df[ x ]进行子集
  • df~df.isin(df2)的否定,对于属于df.isin(df2)的{​​{1}}行,其取值为True。
  • df删除具有df2值的行。在这种情况下,我们不需要的行在上面的过滤表达式中被强制为.dropna(),因此我们将其删除。