我有一个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中的仅值匹配
答案 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)]