首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将每个第一个匹配行中的列值设置为0

将每个第一个匹配行中的列值设置为0
EN

Stack Overflow用户
提问于 2020-01-30 05:17:03
回答 1查看 163关注 0票数 1

我正在尝试检测时间戳之间的差值低于某个阈值的时间序列。为此,我将时间戳列表转换为秒,并测量每个时间戳之间的差异。我已经编写了执行此操作的代码,但问题是,当我测量日期之间的差异时,每天第一行的时间差值应该为零。因此,下面数据框中的值86390应为0。这只是一个人为的例子。对于多个分组,如何将每个分组中的第一个条目设置为0?

代码:

代码语言:javascript
代码运行次数:0
运行
复制
import pandas as pd

arr= []
df = pd.DataFrame(
    {'date': ['2019-01-01 00:02:48.714000' , '2019-01-01 00:02:58.714000' , '2019-01-02 00:02:48.714000' , '2019-01-02 00:04:48.714000'],
     'id': [1 , 2 , 3 , 4],

    })
df['date'] = pd.to_datetime(df['date'])

for d in df['date'] : 
    arr.append(d.timestamp())

df.sort_values(by=['date'])
df['TIME_IN_SEC'] = arr
df['TIME_IN_SEC_SHIFT'] = df.TIME_IN_SEC.shift(1)
df['TIME_DIFF'] = df["TIME_IN_SEC"] - df["TIME_IN_SEC_SHIFT"]

list_values = []

for g in df.groupby(pd.Grouper(key='date',freq='D')) : 
    list_values.append(sum(g[1]['TIME_DIFF']) / len(g[1]))

df

渲染:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-30 09:39:51

要将每天的第一行设置为零,您可以按日期列进行分组,但提取实际的日期值,然后聚合到“第一”行。为此,为“id”列创建一个系列。(我假设它们是唯一的值。)

代码语言:javascript
代码运行次数:0
运行
复制
id_filt = df.groupby(df.date.dt.date).first()['id']

然后使用loc只返回具有'id‘值的行,然后将列设置为零。

代码语言:javascript
代码运行次数:0
运行
复制
df.loc[df["id"].isin(id_filt.values), ["TIME_IN_SEC_SHIFT", "TIME_DIFF"]] = 0

                     date  id   TIME_IN_SEC  TIME_IN_SEC_SHIFT  TIME_DIFF
0 2019-01-01 00:02:48.714   1  1.546301e+09       0.000000e+00        0.0
1 2019-01-01 00:02:58.714   2  1.546301e+09       1.546301e+09       10.0
2 2019-01-02 00:02:48.714   3  1.546387e+09       0.000000e+00        0.0
3 2019-01-02 00:04:48.714   4  1.546387e+09       1.546387e+09      120.0

当然,您可以将这些组合在一起以获得:

代码语言:javascript
代码运行次数:0
运行
复制
df.loc[
    df["id"].isin(df.groupby(df.date.dt.date).first()["id"].values),
    ["TIME_IN_SEC_SHIFT", "TIME_DIFF"],
] = 0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59975706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档