gpt4 book ai didi

python - 每天仅针对特定值删除 Dataframe 中的第一行

转载 作者:行者123 更新时间:2023-11-28 22:34:50 25 4
gpt4 key购买 nike

有没有办法每天删除 Dataframe 中的第一行,仅针对特定值。例如:

2014-03-04 10:00:00   -1.0
2014-03-04 10:04:00 1.0
2014-03-04 10:42:00 -1.0

2014-03-05 09:57:00 1.0
2014-03-05 10:05:00 -1.0
2014-03-05 10:30:00 1.0

对于以上每一天,如果 1.0 是第一个值,则应删除该行。所以在上面的示例中,这会看到行 2014-03-05 10:00:00 已删除。

如果不使用类似 for day in df.index: 的方法遍历数据帧行,我想不出一种方法来执行此操作,这对于处理大型数据集来说速度很慢。

最佳答案

你可以先groupby by DatetimeIndex.year和聚合head .然后通过 boolean indexing 找到列值为 1 的所有第一个索引最后drop他们:

如果日期时间不重复,此解决方案效果很好。

print (df)
col
2014-03-04 10:00:00 -1.0
2014-03-04 10:04:00 1.0
2014-03-04 10:42:00 -1.0
2014-03-05 09:57:00 1.0
2014-03-05 10:05:00 -1.0
2014-03-05 10:30:00 1.0

df1 = df.col.groupby(df.index.date).head(1)
print (df1)
2014-03-04 10:00:00 -1.0
2014-03-05 09:57:00 1.0
Name: col, dtype: float64

print (df1[df1 == 1].index)
DatetimeIndex(['2014-03-05 09:57:00'], dtype='datetime64[ns]', freq=None)

print (df.drop(df1[df1 == 1].index))
col
2014-03-04 10:00:00 -1.0
2014-03-04 10:04:00 1.0
2014-03-04 10:42:00 -1.0
2014-03-05 10:05:00 -1.0
2014-03-05 10:30:00 1.0

关于python - 每天仅针对特定值删除 Dataframe 中的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687786/

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