我有数据框
df1
ec em p_x p_y
0 22 aa 44 45
1 22 aa 45 44
2 22 aa 47 nan
3 67 bb 56 92
4 67 bb 92 56
5 67 bb 92 40
6 67 bb 92 56
7 82 tt 23 12
8 82 tt 23 23
9 82 tt 12 23
我正在寻找输出为
ec em p_x p_y
0 22 aa 47 nan
1 67 bb 92 40
2 67 bb 92 56
我想针对特定的ec和em列删除基于列p_x和p_y的重复值。请让我知道我该如何实现。
或者即使我可以像这样重新订购df1
ec em p_x p_y
0 22 aa 44 44
1 22 aa 45 45
2 22 aa 47 nan
3 67 bb 56 56
4 67 bb 92 92
5 67 bb 92 40
6 67 bb 92 56
7 82 tt 23 23
8 82 tt 23 23
9 82 tt 12 12
我可以使用df1 [〜df1 ['p_x'] == df1 ['p_y']] 并达到愿望的结果
答案 0 :(得分:0)
下面是您遇到的问题的熊猫代码:
import numpy as np
conditions = [
(df['p_x'].isna() == False) & (df['p_y'].isna() == False),
(df['p_x'].isna() == False) & (df['p_y'].isna() == True),
(df['p_x'].isna() == True) & (df['p_y'].isna() == False)
]
choices = [df['p_x'] * df['p_y'], df['p_x'], df['p_y']]
df['flag'] = np.select(conditions, choices, default='black')
df = df.drop_duplicates(subset=["flag"], keep = False).drop(columns = ["flag"])
让我知道这是否对您有帮助