我想根据条件将Pandas Dataframe分为2个数据帧

时间:2018-07-15 08:39:03

标签: python pandas pandas-groupby

我有一个4列的基本数据框。

 column_A column_B  column_C   id  
0       1       1      anna    123
1       2       1      anna      7
2      30       2      bob      42
2      20       2      bob      12
3      10       3      charlie   1
4     100       3      david     2

我想将其拆分为具有以下属性的2个不同的数据框。

数据框1:

 column_A column_B  column_C   id  
0       1       1      anna    123
1       2       1      anna      7
2      30       2      bob      42
2      20       2      bob      12

column_B column_C中的两个值都匹配

数据框2:

  column_A column_B  column_C   id
3      10       3      charlie   1
4     100       3      david     2

column_B中的仅值匹配

2 个答案:

答案 0 :(得分:3)

您可以检查重复项。

In [200]: dfs = {i: n for i, n in df.groupby(
                    df.duplicated(subset=['column_B', 'column_C'], keep=False))}

In [201]: dfs[True]
Out[201]:
   column_A  column_B column_C   id
0         1         1     anna  123
1         2         1     anna    7
2        30         2      bob   42
2        20         2      bob   12

In [202]: dfs[False]
Out[202]:
   column_A  column_B column_C  id
3        10         3  charlie   1
4       100         3    david   2

答案 1 :(得分:2)

要保留无重复记录(第5和6行),请使用WaitForResponse函数:

drop_duplicates

输出:

dfA = df.drop_duplicates(subset = ['column_B', 'column_C'], keep = False)

要保留重复记录(行1至4),请使用 column_A column_B column_C column_D 4 10 3 charlie 1 5 100 3 davis 2 函数:

duplicated

输出:

dfB = df[df.duplicated(subset = ['column_B', 'column_C'], keep = False)]