【发布时间】:2020-10-19 23:32:04
【问题描述】:
我有一个包含 200 万条记录的 pandas 数据框。 (DA1、DA2等2列) 如果我根据 DA1 值对数据框进行排序,则如下所示。我的真实数据框有 200 万条记录。
df
DA1 DA2
0 1.0 1.0
1 1.0 11256.0
2 1.0 131248.0
3 2.0 2.0
4 2.0 11585.0
5 2.0 25894.0
6 3.0 3.0
如果我根据 DA2 值对数据框进行排序,如下所示。
df.head(6)
DA1 DA2
0 1.0 1.0
87472 11256.0 1.0
267142 131248.0 1.0
3 2.0 2.0
568875 11585.5 2.0
598253 25894.0 2.0
652875 365845.0 2.0
如果有任何行正在翻转并且在另一行中,我想删除该行。我的意思是如果 DA1 2.0 和 DA2 365845.0 以及另一行 DA1 365845.0 和 DA2 2.0 我想删除其中的一个。
我基本上想删除索引 87472、267142、568875 和 598253 中的这些重复值。 下面的行基本上要掉了。
DA1 DA2
87472 11256.0 1.0
267142 131248.0 1.0
568875 11585.5 2.0
598253 25894.0 2.0
我可以在 for 循环或 lambda 函数中执行此操作吗? **他们中的大多数与上述数据框混淆。这是我真正想做的一个简单的例子。如果任何行翻转并具有相同的值,我想删除它。 DA1 1 和 DA2 2 另一行 DA1 2 和 DA2 1 我想放弃它。 **。
df = pd.DataFrame({"Column1":[1, 1,1, 3,2],
"Column2":[1,2,3,1,1]})
df
Column1 Column2
0 1 1
1 1 2
2 1 3
3 3 1
4 2 1
# I basically need to delete 3, 4 indexes since those values already in 1,2 indexes
I need this data frame
df
Column1 Column2
0 1 1
1 1 2
2 1 3
提前致谢。
【问题讨论】:
-
为什么要保留索引 652875?
-
这些只是您要删除的索引吗?你想放弃更多。
-
@DavidErickson 因为它不是 2.0 365845.0 格式。如果任何行正在翻转并且在另一行中,我想删除该行。我的意思是如果 2.0 365845.0 和 365845.0 2.0 我想放弃一个。
-
@Grayrigel 有很多重复项我想删除很多索引
标签: python pandas for-loop lambda