Pandas 根据数据中的值删除重复的数据
我有一个这样的数据帧Pandas 根据数据中的值删除重复的数据,pandas,duplicates,Pandas,Duplicates,我有一个这样的数据帧 id col1 2 T 2 T 4 R 4 T 6 G 6 G 我希望通过以下方式进行重复数据消除: 如果相同id有T和T,我想保留这两行 如果我有相同id的G或R和G或R,我想保留这两行 如果我有T和(G或R)作为同一行,我只想保留T(删除两行中的一行) 我想要这个结果:) 谢谢:)用于筛选: m1 = df['col1'].eq('T') m2 = m1.groupby(df['id']).transform('sum')
id col1
2 T
2 T
4 R
4 T
6 G
6 G
我希望通过以下方式进行重复数据消除:
如果相同id有T和T,我想保留这两行
如果我有相同id的G或R和G或R,我想保留这两行
如果我有T和(G或R)作为同一行,我只想保留T(删除两行中的一行)
我想要这个结果:)
谢谢:)用于筛选:
m1 = df['col1'].eq('T')
m2 = m1.groupby(df['id']).transform('sum').ne(1)
df = df[m1 | m2 ]
print (df)
id col1
0 2 T
1 2 T
3 4 T
4 6 G
5 6 G
说明:
将T
的col1
与(=
)进行比较:
使用sum
计算各组的True
值:
print (m1.groupby(df['id']).transform('sum'))
0 2.0
1 2.0
2 1.0
3 1.0
4 0.0
5 0.0
Name: col1, dtype: float64
比较不等于(!=
):
并通过|
按位或链接在一起:
print (m1 | m2)
0 True
1 True
2 False
3 True
4 True
5 True
Name: col1, dtype: bool
有G或R和G或R
-没有打字错误?每组总共有2个值?例如,您是否可以创建10-15行,其中包含多个组,其中一些值被删除,而一些值未被删除?
print (m1.groupby(df['id']).transform('sum'))
0 2.0
1 2.0
2 1.0
3 1.0
4 0.0
5 0.0
Name: col1, dtype: float64
m2 = m1.groupby(df['id']).transform('sum').ne(1)
print (m2)
0 True
1 True
2 False
3 False
4 True
5 True
Name: col1, dtype: bool
print (m1 | m2)
0 True
1 True
2 False
3 True
4 True
5 True
Name: col1, dtype: bool