- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个这样的数据框:
datetime levels shear
2016-05-01 00:10:00 100 5
2016-05-01 00:10:00 200 6
2016-05-01 00:10:00 300 10
2016-05-01 00:10:00 400 11
2016-05-01 00:20:00 100 7
2016-05-01 00:20:00 300 10
2016-05-01 00:30:00 100 5
2016-05-01 00:30:00 200 9
2016-05-01 00:30:00 300 12
2016-05-01 00:30:00 400 15
2016-05-01 00:40:00 100 19
2016-05-01 00:40:00 200 2
2016-05-01 00:40:00 300 18
这是每10分钟间隔在不同高度的风切变。
我想做的是按级别对其进行分组,然后计算每个级别的连续发生的剪切。因此,首先我创建另一列,它是每个连续数据组按级别的时间差:
data3_5['Delta'] = data3_5.sort_values(['levels','datetimes']).groupby('levels')['datetimes'].diff()
然后定义一个函数,对连续出现的相同时间差进行滚动计数:
def rolling_count(val):
if val == rolling_count.previous:
rolling_count.count +=1
else:
rolling_count.previous = val
rolling_count.count = 1
return rolling_count.count
rolling_count.count = 0 #static variable
rolling_count.previous = None #static variable
应用该函数并添加一个新列:
data3_5['count'] = data3_5.sort_values(['levels','datetimes']).groupby('levels')['index'].diff().apply(rolling_count)
然后最后打印出结果:
group = data3_5.groupby('levels', as_index=False)
group_keys = sorted(list(group.groups.keys()))
for each in range(0,len(group_keys)):
group_result = group.get_group(group_keys[each])
print(group_result)
部分结果如下:
datetime levels shear Delta count
2016-05-01 00:10:00 100 5 NaT 1
2016-05-01 00:20:00 100 7 00:10:00 1
2016-05-01 00:30:00 100 5 00:10:00 2
2016-05-01 00:40:00 100 19 00:10:00 3
datetime levels shear Delta count
2016-05-01 00:10:00 200 6 NaT 1
2016-05-01 00:30:00 200 9 00:20:00 1
2016-05-01 00:40:00 200 2 00:10:00 1
这不是我们想要的结果,因为会有两个问题:1. 每个级别的第一个计数将被视为 NaT,因此下一个连续出现的值将被视为第一次出现。2. 与问题1类似,对于200级,第三个结果应计为2。
我该如何解决这个问题?谢谢。
最佳答案
让我们试试:
首先让我们确保 df['datetime'] 确实是 datetime 对象:
df['datetime'] = pd.to_datetime(df['datetime'])
df['Delta'] = df.groupby('levels')['datetime'].transform(lambda x: x-x.shift(1))
df['count'] = df.groupby('levels')['Delta'].transform(lambda x : x.le(pd.Timedelta('10 minutes')).cumsum())
df.sort_values(by='levels')
输出:
datetime levels shear Delta count
0 2016-05-01 00:10:00 100 5 NaT 0
4 2016-05-01 00:20:00 100 7 00:10:00 1
6 2016-05-01 00:30:00 100 5 00:10:00 2
10 2016-05-01 00:40:00 100 19 00:10:00 3
1 2016-05-01 00:10:00 200 6 NaT 0
7 2016-05-01 00:30:00 200 9 00:20:00 0
11 2016-05-01 00:40:00 200 2 00:10:00 1
2 2016-05-01 00:10:00 300 10 NaT 0
5 2016-05-01 00:20:00 300 10 00:10:00 1
8 2016-05-01 00:30:00 300 12 00:10:00 2
12 2016-05-01 00:40:00 300 18 00:10:00 3
3 2016-05-01 00:10:00 400 11 NaT 0
9 2016-05-01 00:30:00 400 15 00:20:00 0
关于python - 如何统计一个时间段的连续出现次数? - Pandas 蟒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45581354/
如何玩 turtle ,如何使用 turtle ? 我无法像下图所示那样工作(忽略颜色)。 from turtle import * from math import * def formulaX(R
我有一个这样的数据框: datetime levels shear 2016-05-01 00:10:00 100 5 2016-05-
我正在从事 Linkedin 网络抓取项目。我正在尝试获取某人感兴趣的公司列表(注意我没有使用 API)。这是一个动态网站,所以我需要在抓取公司名称的同时向下滚动。我知道如何在主窗口中执行此操作,但由
>>> import scipy.stats Traceback (most recent call last): File "", line 1, in File "/usr/local/
在 Python 上的 Selenium 中,我尝试使用 选择一个元素 driver = webdriver.Firefox() driver.find_element_by_css_selector
我正在尝试使用 Python 自动化一些 SAP 作业监控。我想创建一个脚本来执行以下操作: 连接并登录SAP环境->打开SM37事务->发送作业参数(name-user-from-to)-> 读取输
我想在点击后抓取页面的页面源。然后使用 browser.back() 函数返回。但是 Selenium 不会让页面在点击后完全加载,并且由 JavaScript 生成的内容不会包含在该页面的页面源中。
如何在 Opera 中打开默认配置文件?我的意思是和我在歌剧院打开展台时一样的轮廓。此代码只是打开了一个新的配置文件: import os from selenium import webdriver
我最近一直在开发一款用于创建分形图像的软件。但我意识到要填充形状,需要分层完成,否则会覆盖部分。这是我当前的代码: import turtle def CreatePolygon (turt, Sid
我有一个包含要创建的列的列表: new_cols = ['new_1', 'new_2', 'new_3'] 我想在数据框中创建这些列并用零填充它们: df[new_cols] = 0 获取错误: "
你知道为什么当正方形的边是奇数时下面的代码会产生扭曲的正方形吗? from turtle import * s = 67.0 pu();fd(s/2.0);rt(90.0);fd(s/2.0);pd(
在 Pandas 中,我如何创建一个列,表示“日期”列从今天开始已经过去的天数?由于我的数据中有重复的"file",我只需要最大日期。 这是我的假设数据: File,Status,Date pafpu
所以这个页面有几个 ... ... ... ... 这些标签。虽然我可以执行 find_elements_by_xpath 然后选择我想要的那个,但有没有办法具体说明,我想点击土 bean 链接? 最
我有 df 看起来像这样: Label Base Label Très à gauche
[ Ed:也许我只是问这个?不确定 -- Capture JSON response through Selenium ] 我正在尝试使用 Selenium (Python) 通过超链接导航到 Web
我正在尝试将 pandas df 写入 csv。但是,我需要循环很多次才能分块输出。我想在 csv 中垂直堆叠输出。因此,在每次迭代之后,我想写入一组特定的行(1:10,然后 11:20,等等)并清除
我想将数据框中的一列转换为 int 数据类型。但是,它会引发错误,因为某些行的条目中包含字母。我想创建一个新的数据框,该数据框在此列中只有纯数字条目(或至少没有字母)的条目。 所以我的问题是:有没有办
我在 Windows 7 机器上使用 Python 2.7 Anaconda 安装进行数据分析和科学计算。 当新库发布时(例如新版本的 pandas、patsy 等),您会建议我如何测试新版本与我现有
我又撞墙了。我是一个新手,所以我不得不再次依赖你的强大知识。 我从一个数据集开始,看起来像这样: ,user_account_id,user_lifetime,user_no_outgoing_ac
我有一个包含大约 5 万行和 2 列的表格。你可以认为每一行是一部电影,列是该电影的属性 - “ID”:该电影的 ID,“标签”:电影的一些内容标签,以字符串列表的形式每部电影。 数据看起来像这样:
我是一名优秀的程序员,十分优秀!