如何有效地从DataFrame中删除重复的行

布赖恩

我正在处理一个非常大的数据框,并且正在使用它pandas来进行分析。数据帧的结构如下

import pandas as pd

df = pd.read_csv("data.csv")
df.head()

    Source  Target  Weight
0       0   25846       1
1       0    1916       1
2   25846       0       1
3       0    4748       1
4       0   16856       1

问题是我想删除所有“重复项”。从某种意义上说,如果我已经有一个包含aSource和a的行,则Target我不希望在另一行上重复此信息。例如,在这种意义上,行号0和2是“重复的”,并且仅应保留其中之一。

摆脱所有“重复”的一种简单方法是

for index, row in df.iterrows():
    df = df[~((df.Source==row.Target)&(df.Target==row.Source))]

但是,由于我的数据帧有大约300万行,因此这种方法的速度非常慢。您认为这样做有更好的方法吗?

亨利

创建两个临时列以保存minimum(df.Source, df.Target)maximum(df.Source, df.Target),然后按以下duplicated()方法检查重复的行

import numpy as np

import pandas as pd

df = pd.DataFrame(np.random.randint(0, 5, (20, 2)), columns=["Source", "Target"])

df["T1"] = np.minimum(df.Source, df.Target)
df["T2"] = np.maximum(df.Source, df.Target)

df[~df[["T1", "T2"]].duplicated()]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何有效地从大型文本文件中删除重复行?

如何有效地删除python中dataframe或csv文件中的所有重复项?

如何有效地删除重复内存?

有效地从列表中删除重复项

如何有效地删除字符串中连续的重复单词或短语

如何有效地删除列表中的连续重复项?

如何有效地从列表中删除

如何有效地从大型MySQL表中删除过期的行

如何有效地从 3d numpy 数组中删除行和列?

如何在不使用Set的情况下有效地从数组中删除重复项

如何比较 2 个列表并有效地从 1 个列表中删除重复项?

有效地删除不同行之间包含重复元素的行

如何有效地提取仅包含 SQL 中具有重复元素的行的子表?

有效地删除元组列表中的部分重复项

如何有效地从矩阵的每个重复行中获取最小值和最大值

如何有效地删除熊猫中某些列的值大于99%的所有行?

如何有效地生成所有可能的坐标对而不在numpy中重复

如何有效地更新DataFrame中的一组行值?如何使该算法可扩展?

有效地从大.tgz中删除文件

有效地从nparray中删除零

有效地从 HashMap 中删除列表项

如何有效地获取DataFrame行的索引,这些行满足某些累积条件?

如何基于比较有效地删除行

如何有效地删除大文件的第一行?

如何有效地删除仅包含0作为值的前导行?

如何有效地从Scala的ListBuffer中删除所有元素?

如何有效地从具有特定值模式的字典中删除元素?

有效地删除熊猫数据框中的行

如果某些行值与第二个DataFrame中的行值相同,则从DataFrame中有效地删除行