我目前正在尝试从命令行编写 aws ec2 查询(在 AWS Linux 中,这并不重要)。我正在尝试设置一个匹配以下两项的过滤器:
实际发生的情况是,所有处于关闭状态的实例都将被返回,无论它们是否设置了标签“ShortPurpose”:“Fleet”。
我的实例设置如下:
+-------------+--------------+------------------------+--+
| Instance ID | Tag | Tag Value | |
+-------------+--------------+------------------------+--+
| i-09876 | ShortPurpose | Fleet | |
| | Organisation | UmbrellaCorp | |
| | Name | cloud-01 | |
| | Owner | ORG-UMBR-ELLA | |
| | Purpose | Cloud processing fleet | |
+-------------+--------------+------------------------+--+
| | | | |
| i-12345 | (no tags) | | |
| | | | …Run Code Online (Sandbox Code Playgroud) 我正在使用 Dask 读取 10m 行 csv+ 并执行一些计算。到目前为止,它被证明比 Pandas 快 10 倍。
我在下面有一段代码,当与 Pandas 一起使用时可以正常工作,但与 dask 一起使用时会引发类型错误。我不确定如何克服 typerror。似乎在使用 dask 时,select 函数将一个数组传递回数据框/列,但在使用 Pandas 时却没有?但我不想将整个事情切换回 Pandas 并失去 10 倍的性能优势。
这个答案是 Stack Overflow 上其他一些人的一些帮助的结果,但是我认为这个问题与最初的问题相差甚远,以至于完全不同。代码如下。
PANDAS: 不包括 AndHeathSolRadFact 的工作时间:40 秒
import pandas as pd
import numpy as np
from timeit import default_timer as timer
start = timer()
df = pd.read_csv(r'C:\Users\i5-Desktop\Downloads\Weathergrids.csv')
df['DateTime'] = pd.to_datetime(df['Date'], format='%Y-%d-%m %H:%M')
df['Month'] = df['DateTime'].dt.month
df['Grass_FMC'] = (97.7+4.06*df['RH'])/(df['Temperature']+6)-0.00854*df['RH']+3000/df['Curing']-30
df["AndHeathSolRadFact"] = np.select(
[
(df['Month'].between(8,12)),
(df['Month'].between(1,2) & df['CloudCover']>30)
], #list …Run Code Online (Sandbox Code Playgroud) 目前作为新手使用 PostgresSQL 10,并尽可能遵循文档。欢迎大家帮忙。
我正在尝试根据 case 语句设置变量的值,以便我可以在代码的下一部分中使用该值。我在语法上遇到问题,老实说只是了解如何从 case 语句中设置值。
下面是我到目前为止得到的代码。
我正在尝试设置变量“AndSol”的值。根据 case 语句,该值将设置为 0 或 1。
带有注释“太阳辐射”的块是我在设置变量值时遇到问题的地方。包含的其余代码仅供参考我想要实现的目标。我以类似THEN AndSol := 1;的方式结束每个 where 子句。,我认为这就是错误所在。我不知道如何解决它。
基本流程:
计算出该变量应该为 0 还是 1。
设置变量。
在下一部分中使用该变量。
DO $$
DECLARE AndSol NUMERIC;
BEGIN
DROP MATERIALIZED VIEW IF EXISTS view_6day_mat;
CREATE MATERIALIZED VIEW view_6day_mat
AS
SELECT prod_qld_6km_grids.weather_cell_id,
prod_qld_6km_grids.latitude,
prod_qld_6km_grids.longitude,
/* Solar Radiation */
CASE
WHEN EXTRACT(MONTH FROM prod_weathergrids.dates) >= 8 AND EXTRACT(MONTH FROM prod_weathergrids.dates) <= 12 THEN AndSol := 1;
WHEN EXTRACT(MONTH FROM prod_weathergrids.dates) = 1 AND EXTRACT(MONTH …Run Code Online (Sandbox Code Playgroud) 尝试在 AWS Lightsail 上创建新实例时,只有 AWS Linux (2018.03.0) 选项,而不是 AWS Linux 2。
鉴于 AWS Linux 将于 2020 年 12 月终止支持,我有点担心在 Lightsail 中找不到 AWS Linux 2。
我在这里错过了什么吗?
我能找到的大多数展示 Python 的完整 MSSQL 连接方法的示例在几个月前就已经过时了,这在一定程度上要归功于 SQLAlchemy 1.3中的一些优化。我正在尝试复制我在文档中看到的内容。
我在使用 pyodbc 将 SQLAlchemy 连接到 MSSSQL Server 时遇到问题。
我有一个本地 SQL 服务器,可以从 SQL Server Management Studio 访问:#DESKTOP-QLSOTTG\SQLEXPRESS
数据库是:TestDB
本示例中的用户名是:TestUser
密码,本示例中是:TestUserPass
我想运行一个将 pandas 数据帧导入 MSSQL 数据库的测试用例(案例?),以便找出最快的处理方式。然而,这个问题的目的是围绕连接性。
信用:我从 Gord那里借用了一些用于数据帧/更新的代码。
import pandas as pd
import numpy as np
import time
from sqlalchemy import create_engine, event
from urllib.parse import quote_plus
# for pyodbc
#engine = create_engine('mssql+pyodbc://TestUser:TestUserPAss@DESKTOP-QLSOTTG\\SQLEXPRESS:1433/TestDB?driver=ODBC+Driver+17+for+SQL+Server', fast_executemany=True)
engine = create_engine("mssql+pyodbc://TestUser:TestUserPass@DESKTOP-QLSOTTG\\SQLEXPRESS:1433/TestDB?driver=ODBC+Driver+13+for+SQL+Server", fast_executemany=True)
# test data
num_rows = 10000
num_cols = 100
df = pd.DataFrame(
[[f'row{x:04}col{y:03}' for y …Run Code Online (Sandbox Code Playgroud) 我是一个相对的 Postgres 新手,但对 MSSQL 有一些基本的经验。
我有一个关于 PostgreSQL(PostGIS,它是空间的)的表,其中包含大约 10,000,000 个多边形。它所在的机器有 64GB RAM、16 个内核和一个 1TB 旋转硬盘。这只是目前数据库中仅有的表。因为很少访问该表(可能每隔几个小时一次),所以我注意到该表不会像我对 MSSQL 所期望的那样留在 RAM 中。相反,该表似乎从内存中释放并以活动状态位于磁盘上。当我想查询/加入/询问/等时,这导致 100% 硬盘利用率超过 15 分钟。当表似乎在内存中时,后续操作明显更快(秒而不是分钟)。
有没有办法让 Postgres 将某个表保留在内存中,或者让调度程序/执行智能的任何 postgres 位将表保存在 ram 中,而不是让它进入磁盘,然后在需要时将其重新调用到内存中?
我有空间索引(和其他几个经常需要过滤/排序索引的列),所以当从内存中调用时它非常快。
同样的问题似乎也严重影响了 JOINS,因为它们也需要首先读取表。这对我来说是一个单独的问题,但似乎受到相同的根本问题的影响。磁盘 IO 绑定。
我的数据库设置就是这样 - 所以一般来说我不会受到可用内存/内存的限制,据我所知。
编辑:表是 26GB
Postgres 13.2 with PostGIS 3.1.1
max_connections = '20';
shared_buffers = '8GB';
effective_cache_size = '24GB';
maintenance_work_mem = '2047MB';
checkpoint_completion_target = '0.9';
wal_buffers = '16MB';
default_statistics_target = '500';
random_page_cost = '4';
work_mem = '26214kB';
min_wal_size = '4GB';
max_wal_size = '16GB';
max_worker_processes = '16'; …Run Code Online (Sandbox Code Playgroud) 目前使用 Pandas 和 Numpy。我有一个名为“df”的数据框。假设我有以下数据,如何根据 between 子句为第三列提供值?如果可能的话,我想将其视为一种矢量化方法,以保持我已有的速度。
我尝试过 lambda 函数,但坦率地说,我不明白我在做什么,并且我收到错误,例如对象没有属性“之间”。
一般方法 - 使用非矢量化方法:
NOTE: I am looking for a way to make this vectorised.
If df.['Col2'] is between 0 and 10
df.['Col 3'] = 1
Elseif df.['Col2'] is between 10.01 and 20
df.['Col3'] = 2
Else if df.['Col2'] is between 20.1 and 30
df.['Col3'] = 3
Run Code Online (Sandbox Code Playgroud)
样本集
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| a | 5 | 1 |
| b | 10 | 1 …Run Code Online (Sandbox Code Playgroud) 我一直在用例子等来讨论这个主题,但我似乎无法让它发挥作用。
我有一个 pandas 数据框,其中有一个名为“Date我希望将格式从年-月-日小时:分钟更改为年-月-日小时:分钟”的字段。新的领域将是Date2. 该Date字段的类型被报告为“对象”。
到目前为止,我已经尝试过以下几种变体:
df['Date2'] = pd.to_datetime(df['Date'], format='%Y-%m-%d %H:%M').dt.strftime('%Y-%d-%m %H:%M')
df['Date2'] = pd.to_datetime(df['Date'], format='%Y-%m-%d %H:%M')
Run Code Online (Sandbox Code Playgroud)
该字段中的示例日期Date是2020-02-12 04:00
所需的Date2输出是2020-12-02 04:00
pandas ×4
python ×4
dataframe ×2
postgresql ×2
amazon-ec2 ×1
aws-cli ×1
dask ×1
numpy ×1
plpgsql ×1
postgis ×1
python-3.x ×1
sql-server ×1
sqlalchemy ×1