- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的数据框我想按 url 和状态对它们进行分组,并按日期拆分记录,这是一种更有效的方法吗?
def transform_to_unique(df):
test = []
counter = 0
#first_row
if df.loc[0, 'status']!= df.loc[1, 'status']:
counter = counter +1
test.append(counter)
for i in range(1, len(df)):
if df.loc[i-1, 'url']!= df.loc[i, 'url']:
counter=0
if df.loc[i-1, 'status']!= df.loc[i, 'status'] :
counter = counter +1
test.append(counter)
df['test'] = pd.Series(test)
return df
df = transform_to_unique(frame)
df_g = df.groupby(['url', 'status', 'test'])['date_scraped'].agg({min, max})
这是一个数据框:
1000,20191109,active1000,20191108,inactive2000,20191109,active2000,20191101,inactive351,20191109,active351,20191102,active351,20191026,active351,20191019,active351,20191012,active351,20191005,active351,20190928,inactive351,20190921,inactive351,20190914,inactive351,20190907,active351,20190831,active351,20190615,inactive3000,20200101,active
import pandas as pd
frame =pd.read_clipboard(sep=",", header=None)
frame.columns = ['url', 'date_scraped', 'status']
最佳答案
我不确定我是否正确理解了 test
列的标题,但这是否是您想要实现的目标(基于您发布的示例数据):
import numpy as np
df.sort_values(["url", "date_scraped"], axis=0, ascending=True, inplace=True)
df["date_scraped_till"]=np.where(df["url"]==df["url"].shift(-1),
df["date_scraped"].shift(-1), np.nan).astype(np.int32)
输出:
url date_scraped status date_scraped_till
15 351 20190615 inactive 20190831
14 351 20190831 active 20190907
13 351 20190907 active 20190914
12 351 20190914 inactive 20190921
11 351 20190921 inactive 20190928
10 351 20190928 inactive 20191005
9 351 20191005 active 20191012
8 351 20191012 active 20191019
7 351 20191019 active 20191026
6 351 20191026 active 20191102
5 351 20191102 active 20191109
4 351 20191109 active 0
1 1000 20191108 inactive 20191109
0 1000 20191109 active 0
3 2000 20191101 inactive 20191109
2 2000 20191109 active 0
16 3000 20200101 active 0
编辑
如果您的意思不是“拆分”,而是“折叠”,那么这应该可以解决问题(这基本上是执行测试
列的更有效方法):
import numpy as np
df.sort_values(["url", "date_scraped"], axis=0, ascending=True, inplace=True)
df["test"]=np.where((df["url"]==df["url"].shift(1)) & (df["status"]==df["status"].shift(1)), 0,1)
df["test"]=df.groupby(["url", "status", "test"])["test"].cumsum().replace(to_replace=0, method='ffill')
df_g = df.groupby(['url', 'status', 'test'])['date_scraped'].agg({min, max})
输出:
max min
url status test
351 active 1 20190907 20190831
2 20191109 20191005
inactive 1 20190615 20190615
2 20190928 20190914
1000 active 1 20191109 20191109
inactive 1 20191108 20191108
2000 active 1 20191109 20191109
inactive 1 20191101 20191101
3000 active 1 20200101 20200101
关于Python Dataframe 迭代行(比较它们之间的值)并准备一组作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59460167/
我一直在试图找出为什么这会给我一个错误: PREPARE test FROM 'SELECT t.blah FROM (SELECT ? AS blah) t;'; ERROR 1054 (42S22
我想了解 Go 中的 channel 。我读过默认情况下发送和接收 block ,直到发送方和接收方都准备好。但是我们如何确定发送方和接收方的准备情况。 例如在下面的代码中 package main
大部分的pytorch入门教程,都是使用torchvision里面的数据进行训练和测试。如果我们是自己的图片数据,又该怎么做呢? 1、我的数据 我在学习的时候,使用的是fashion-mnis
在我的 Storyboard中,controller1 有 natigationController 和 segues 到 controller 2。奇怪的是 Segue 工作正常但是 overrid
我正在尝试使用Openshift在线从我的仓库中放入一些代码。 我的构建编译正常,但是部署失败: error: update acceptor rejected nodejs-mongo-persis
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是无关紧要的,
我有一个每晚运行的存储过程。 它从链接服务器中提取一些数据并将其插入到运行 sql 代理作业的服务器上的表中。在运行 INSERT 语句之前,该过程检查链接服务器上的数据库是否联机 (STATE =
我对 PDO 准备好的语句比较陌生。 我忍不住觉得必须有一种更简单、更整洁的方法来执行以下操作:我无论如何都将所有内容加载到一个数组中,然后必须将整个内容重写为一组 ':blah '=>$found[
我正在准备一个 pandas 数据框,用于在 R 的 ggplot2 中绘制带有误差条的图,这需要计算列的统计数据。误差条需要最小值(平均值 - 标准偏差)和最大值(平均值+标准差)。我使用 grou
我的 prepareForSegue 方法没有将数据传递到目标 View Controller 。 var buttonsDictionary = [Int: UIButton]() func cre
需要帮助来完成这个简单的任务。该 sp 应该提供一个结果集,并将从 MS-Access-Database 报告目的中调用。 表名可变,但以数字 (lsid) 结尾。使用串联。max_prepared_
我正在为我工作的小型企业创建销售订单表单。我有一个表单连接到数据库以获取下拉菜单,然后连接到文本框以在需要时添加新数据。如果前面的部分中的所有数据框均已填写,还会出现另外四个部分。 链接到数据库的
以下代码: class Database { (...) public function query($query){ $this->stmt = $this->dbh
我正在开展一个学校项目,涉及一个具有数据库集成的网站。目前正致力于通过它向网站添加新内容(文本、标题、图像)。我已经可以通过网站向数据库添加新用户,但由于某种原因,相同的代码和逻辑不适用于内容。 我注
我如何mysqli::stmt->bind_param在mysql中被视为NULL的东西? 我目前正在使用 $stmt->bind_param('s', 'NULL'); 最佳答案 bind_para
我在此处运行准备 stmt 时遇到语法错误。我尝试手动执行 @c 中的查询并且它有效。不知道为什么 stmt 会给出这个错误。这是我正在使用的代码。 SET @i=24; SET @Bill_mont
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我想知道准备好的查询是否与未准备的查询一样安全。下面是两个示例,一个用于 SELECT,一个用于 UPDATE。第一行是未准备的查询,第二行是准备好的查询。 选择示例: $userDetails =
我是 ios 开发的新手,在我尝试做的事情上遇到了障碍。 我的方法中有这段代码,旨在将特定的 NSObject 从这个 View 传递到下一个 View ,但是它总是让我的应用程序崩溃。 -(void
自上次调用 segue 以来,我的 UIButton 类的 statValue 属性已更新,但 segue 仍发送旧的原始值。有没有办法刷新 prepare 函数(如下),以便它发送新值? overr
我是一名优秀的程序员,十分优秀!