我正在尝试返回有关(移动)固定点的时间窗口的计数。
它试图根据之前的使用情况随时了解仪器的状况。
因此,如果仪器在中午 12.05、12.10、12.15、12.30、12.40 和下午 1 点使用,则使用计数将为:
12.05 -> 1(最后一小时一次)
12.10 -> 2
12.15 -> 3
12.30 -> 4
12.40 -> 5
1.00 -> 6
...但是假设使用在 1.06 恢复: 1.06 -> 6 这不会增加计数,因为第一次运行是一个多小时前。
如何计算此计数并将其附加为一列?
感觉这是一个在 lambda 函数中可能使用 timedelta 的 groupby/aggregate/count,但我不知道从哪里开始。
我也希望能够使用时间窗口,所以不仅仅是过去一小时,还有实例周围的一小时,即+和-30分钟。
以下代码给出了一个起始数据帧:
s = pd.Series(pd.date_range('2020-1-1', periods=8000, freq='250s'))
df = pd.DataFrame({'Run time': s})
df_sample = df.sample(6000)
df_sample = df_sample.sort_index()
Run Code Online (Sandbox Code Playgroud)
我发现的最好的帮助(公平地说,我通常可以从逻辑上拼凑在一起)是滚动时间窗口上的这种独特的计数,但这次我没有做到。
谢谢
我有一个大熊猫数据框(> 100列)。我需要删除各种列集,我希望有一种使用旧列的方法
df.drop(df.columns['slices'],axis=1)
Run Code Online (Sandbox Code Playgroud)
我建立了一些选择,例如:
a = df.columns[3:23]
b = df.colums[-6:]
Run Code Online (Sandbox Code Playgroud)
作为a并b代表我要删除的列集。
下列
list(df)[3:23]+list(df)[-6:]
Run Code Online (Sandbox Code Playgroud)
产生正确的选择,但我不能用实现它drop:
df.drop(df.columns[list(df)[3:23]+list(df)[-6:]],axis=1)
Run Code Online (Sandbox Code Playgroud)
ValueError:操作数不能与形状(20,)(6,)一起广播
我环顾四周,但找不到答案。
(以下与我收到的错误有关):
python numpy ValueError:操作数不能与形状一起广播
感觉好像他们遇到了类似的问题,但是“切片”并不是分开的: 根据Pandas中的列名删除多个列
干杯
我有一个14行的周期数据帧,即每条记录有14行数据(均值,sdev等),我想为每条记录重复提取第2,第4,第7和第9行(14行) ).我的代码是:
Mean_df = df.iloc[[1,3,6,8]::14,:].copy()
这不起作用
TypeError: cannot do slice indexing on <class 'pandas.core.indexes.range.RangeIndex'> with these indexers [[1, 3, 6, 8]] of <class 'list'>
我从这里获得了代码的帮助,这对我来说非常有用,但不是多行选择 - Pandas每隔n行
我可以提取几个不同的切片并组合,但感觉可能有更优雅的解决方案.
有任何想法吗?
从以下类型的数据框中,我希望能够id按日期对字段进行排序和排名:
df = pd.DataFrame({
'id':[1, 1, 2, 3, 3, 4, 5, 6,6,6,7,7],
'value':[.01, .4, .2, .3, .11, .21, .4, .01, 3, .5, .8, .9],
'date':['10/01/2017 15:45:00','05/01/2017 15:56:00',
'11/01/2017 15:22:00','06/01/2017 11:02:00','05/01/2017 09:37:00',
'05/01/2017 09:55:00','05/01/2017 10:08:00','03/02/2017 08:55:00',
'03/02/2017 09:15:00','03/02/2017 09:31:00','09/01/2017 15:42:00',
'19/01/2017 16:34:00']})
Run Code Online (Sandbox Code Playgroud)
id根据日期有效排名或索引。
我用过
df.groupby('id')['date'].min()
Run Code Online (Sandbox Code Playgroud)
这允许我提取第一个日期(虽然我不知道如何使用它来过滤掉行),但我可能并不总是需要第一个日期 - 有时它会是第二个或第三个日期,所以我需要生成一个新的列,带有日期索引 - 结果将如下所示:
关于这种排序/排名/标签有什么想法吗?
我最初的模型忽略了一个非常普遍的问题。
由于可能有一些id并行执行多个测试,因此它们显示在数据库中的多行中,并具有匹配的日期(date对应于它们的记录时间)。这些应该被算作相同的日期,而不是增加 date_rank:我已经生成了一个模型,并进行了更新date_rank以演示其外观:
df = pd.DataFrame({
'id':[1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6,6,6,7,7],
'value':[.01, …Run Code Online (Sandbox Code Playgroud) 我有一个熊猫数据框,它本质上是 2 列和 9000 行
CompanyName | CompanyAddress
Run Code Online (Sandbox Code Playgroud)
地址是这样的
Line1, Line2, ..LineN, PostCode
Run Code Online (Sandbox Code Playgroud)
即字符串(或 dtype 'object')中以逗号分隔的项目的数量基本上不同,我只想提取邮政编码,即字段中最后一个逗号之后的项目
我已经尝试过点符号字符串操作建议(可能很糟糕):
df_address['CompanyAddress'] = df_address['CompanyAddress'].str.rsplit(', ')
Run Code Online (Sandbox Code Playgroud)
只是在字段周围放置了 '[]' - 我没有成功尝试隔离任何拆分/分区字符串的最后一个组件,并maxsplit引发错误。
在 EdChums 对Pandas 用逗号将列拆分为多列的评论后,我取得了一定程度的成功
pd.concat([df_address[['CompanyName']], df_address['CompanyAddress'].str.rsplit(', ', expand=True)], axis=1)
Run Code Online (Sandbox Code Playgroud)
但是,在隔离邮政编码的同时,这只会创建多个列,而邮政编码位于第 3-6 列中……同样不好。
感觉非常接近,请指教。
EmployerName Address
0 FAUCET INN LIMITED [Union, 88-90 George Street, London, W1U 8PA]
1 CITIBANK N.A [Citigroup Centre,, Canary Wharf, Canada Squar...
2 AGENCY 2000 LIMITED [Sovereign House, 15 Towcester Road, Old Strat...
3 Transform Trust …Run Code Online (Sandbox Code Playgroud) 我想在一些图中添加一条水平线,即“目标”线:带状图、箱线图和小提琴图,以显示理想值数据(或理想情况下的范围)。
这个 R 示例(在箱线图中添加多条水平线) - 第一张图像 - 基本上就是它(尽管我会做一些格式化以使其易于展示)。
Python中的R abline() 等价物对我没有帮助(或者我还没有弄清楚如何),因为我正在使用分类数据,所以我只想基本上定义(例如)y=3并绘制它。我的代码(如下)工作正常,我只是不知道如何添加一行。
fig, ax = plt.subplots(nrows=4,figsize=(20,20))
sns.violinplot(x="Wafer", y="Means", hue='Feature',
data=Means[Means.Target == 1], ax=ax[0])
sns.violinplot(x="Wafer", y="Means", hue='Feature',
data=Means[Means.Target == 3], ax=ax[1])
sns.boxplot(x="Feature", y="Means",
data=Means, linewidth=0.8, ax=ax[2])
sns.stripplot(x="Feature", y="Means", hue='Wafer',
data=Means, palette="plasma", jitter=0.1, size=5.5, ax=ax[3])
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助。
我需要使用字典作为大型数据帧的过滤器,其中键值对是不同列中的值。该字典是从单独的数据帧获取的,dict(zip(df.id_col, df.rank_col))因此如果字典不是最好的方法,则可以进行更改。
这与这个问题非常相似:使用字典中的值过滤熊猫数据框,但从根本上(我认为)不同,因为我的字典包含列配对值:
df_x = pd.DataFrame({'id':[1,1,1,2,2,2,3,3,3],
'B':[1,1,1,0,1,0,1,0,1], 'Rank':['1','2','3','1', '2','3','1','2','3'],'D':[1,2,3,4,5,6,7,8,9]})
filter_dict = {'1':'1', '2':'3', '3':'2'}
Run Code Online (Sandbox Code Playgroud)
对于这个数据框,df_x我希望能够查看过滤器字典并将其应用于一组列,此处id和Rank,因此数据框被削减为:
实际的源数据帧大约有 1M 行,字典有 >100 个键值对。谢谢你的帮助。