gpt4 book ai didi

python - 根据值差异放置在相同的行附近

转载 作者:行者123 更新时间:2023-12-03 19:13:22 25 4
gpt4 key购买 nike

你好,我有一个 Pandas 数据框(大约 1000 行),可以这样总结:

     Date      Distance
0 2014-08-13 5.9
1 2014-08-17 10.7
2 2014-08-13 6.2
3 2014-08-20 13.7
4 2014-08-13 8.8
5 2014-08-17 10.9


当日期相同并且两行之间的距离差小于 0.5 时,我想删除行。
我的数据没有被排序

在这个微型案例中,我正在寻找的结果是取回此数据帧:
     Date      Distance
0 2014-08-13 5.9
1 2014-08-17 10.7
3 2014-08-20 13.7
4 2014-08-13 8.8

索引 2 已被删除,因为它与索引 0 的日期相同,并且两个距离之间的差异小于 0.5 。

索引 5 已被删除它与索引 1 的日期相同,并且两者之间的距离差小于 0.5

我对如何有效地解决这个问题一无所知。谢谢你的帮助 !

编辑 : 我之前的例子不够清楚。它不会与特定日期的第一个距离(或最小距离)进行比较。它在特定日期的任意两个距离之间。

这个例子可能更明确:
     Date      Distance
0 2014-08-13 5.9
1 2014-08-17 10.7
2 2014-08-13 6.2
3 2014-08-20 13.7
4 2014-08-13 8.8
5 2014-08-17 10.9
6 2014-08-13 3.3
7 2014-08-13 3.6
8 2014-08-13 3.5
9 2014-08-13 1.7

它应该返回:
     Date      Distance
0 2014-08-13 5.9
1 2014-08-17 10.7
3 2014-08-20 13.7
4 2014-08-13 8.8
6 2014-08-13 3.3
9 2014-08-13 1.7

最佳答案

您必须检查两个条件才能保留一行:

  • 每组中相对于第一个的差异大于0.5
  • 该行不是组中的第一行


  • 为此,您可以定义两个条件并使用 bitwise OR 将它们链接起来。 :
    m1 = df.Distance.sub(df.groupby('Date').Distance.transform('first')).abs().gt(.5)
    m2 = ~df.Date.duplicated()

    df[m1|m2]

    Date Distance
    0 2014-08-13 5.9
    1 2014-08-17 10.7
    3 2014-08-20 13.7
    4 2014-08-13 8.8

    关于python - 根据值差异放置在相同的行附近,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61438178/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com