删除重复数据 Python

Posted

技术标签:

【中文标题】删除重复数据 Python【英文标题】:Deleting Repeating Data Python 【发布时间】:2019-02-24 18:47:34 【问题描述】:

我有一个巨大的房间网状流分布数据库。但问题是网格太小了,所以它们中的某些部分是无用的,并且对我来说很难计算。在我的每个网格长度的 y 尺寸上是 0.00032。我的 y 维度从 0 到 0.45。如您所知,有很多无用的数据。

我想通过删除不能被 0.00128 整除的行来使每个网格长度等于 0.00128,该怎么做?

trainProcessed = trainProcessed[trainProcessed[:,4]%0.00128==0]

我已经尝试过这行代码(trainProcessed 是我的数据作为一个 numpy 数组),但它像 0 -> 0.00128 -> 0.00256 -> 0.00512。但是有些行的值为 0.00384,也可以被 0.00128 整除。顺便说一下数组的形状是(888300,8)。

示例数据:

X:[0,0,0,0,0.00031999,0.00031999,0.00063999,0.00064,0.00096,0.00096,0.000128,0.000128]

示例输出:

X:[0,0,0,0,0.000128,0.000128]

【问题讨论】:

您需要在此处添加示例数据和预期输出。其次 (0.00385%0.00128) 没有给出绝对零……它接近于零但不是精确的零。看看这是否有效 trainProcessed = trainProcessed[round(trainProcessed[:,4]%0.00128,0)==0.0] 补充细节,谢谢。 【参考方案1】:

对于这种情况和函数取模,我将使用小数:

import pandas as pd
from decimal import Decimal
df = pd.DataFrame('values': [0.00128, 0.00384, 0.367, 0.128, 0.34])
print(df)

#convert float to str then Decimal and apply the modulo
#keep only rows which are dividable by 0.00128
filter = df.apply(lambda r: Decimal(str(r['values'])) % Decimal('0.00128')  == Decimal('0') ,axis=1)

#if data are smaller you could multiply by power of 10 before modulo
#filter = df.apply(lambda r: Decimal(str(r['values'] * 1000)) % Decimal('0.00128')  == Decimal('0') ,axis=1)
df=df[filter].reset_index(drop=True)

#the line: df=df[~filter].reset_index(drop=True) does the (not filter)
print(df)

初始输出:

    values
0  0.00128
1  0.00384
2  0.36700
3  0.12800
4  0.34000

最终输出

    values
0  0.00128
1  0.00384
2  0.12800

【讨论】:

这使得在我的情况下所有的值都等于 0 猜测它是因为这些值有超过 5 个浮点数,所以它们不能完全与 0.00128 整除。例如:我有 0.0038399928829 。我尝试通过将数据帧转换为 numpy 数组将它们四舍五入为 5 个浮点数,然后返回数据帧并应用过滤器,但这使得所有值都等于零 唯一的解决方案是正确舍入您的数据,然后将所有数据乘以 10 的幂以获得整数,然后模数就可以了 如果这个答案对你有帮助,请不要忘记 uvpvote/validate the answer!!

以上是关于删除重复数据 Python的主要内容,如果未能解决你的问题,请参考以下文章

如何根据python中的多个条件对excel文件进​​行重复数据删除?

Python - 重复数据删除问题:TypeError:不可散列的类型:'numpy.ndarray'

python 4.清理 - 缺少数据,重复,删除(python数据科学).py

Python中可变数据的重复数据删除/合并

删除重复数据 Python

删除数据框熊猫python中的重复和最相似