如果在另一个数据框中确实存在,则删除行 - python pandas

Posted

技术标签:

【中文标题】如果在另一个数据框中确实存在,则删除行 - python pandas【英文标题】:Remove rows if do exist in another dataframe - python pandas 【发布时间】:2021-09-21 00:25:19 【问题描述】:

我有两个大型数据集:

训练大小:289816 行 X 689 列

测试大小:49863 行 X 689 列

我想删除一些测试集行,因为它们已经存在于训练中。

我检查了以下答案https://***.com/a/44706892

但不幸的是,由于 144 Gb 的内存被填满,python 进程被杀死。

有没有更好的不消耗资源的解决方案?

【问题讨论】:

查看这个答案***.com/a/44706998/14289892 【参考方案1】:

我会推荐一个分段解决方案,类似于以下伪代码:

chunksize = 10**5

for test_chunk in pd.read_csv(test_set_path, delimiter=';', dtype=str, chunksize=chunksize):
    
    # In this loop all the elements that were in testing are filtered
    for train_chunk in pd.read_csv(train_set_path, delimiter=';', dtype=str, chunksize=chunksize):
        test_chunk = test_chunk.loc[~train_chunk.index]

    test_chunk.loc.to_csv('path/to/your/result/csv', mode='a', index=False)

这样你就不会内存不足...

【讨论】:

以上是关于如果在另一个数据框中确实存在,则删除行 - python pandas的主要内容,如果未能解决你的问题,请参考以下文章

如果特定列中的值不是熊猫数据框中的整数,则删除行

PHP MySQL:如果API数据中不存在则删除行

按数据框中是不是存在字符串过滤行

如果不存在,则创建一个 .txt 文件,如果它确实追加一个新行

如果表存在则删除行 SQL

Pyspark 基于另一个类似的数据框添加或删除数据框中的行