例如,假设我以这种方式定义了几个资源(以.tf格式):
resource resource_type X {
name = "X"
}
resource resource_type Y {
name = "Y"
}
...
Run Code Online (Sandbox Code Playgroud)
现在让我们稍后说我想创建新资源,每个资源都对应于先前创建的资源之一(X,Y,...) 有没有办法创建一个列表来保存先前创建的资源,然后循环该资源列表如下:
variable "list_of_previously_created_resources" {
type = list(resource)
default = [resource_type.X, resource_type.Y, ...]
}
# Now create corresponding resources:
resource type_Dependent d {
for_each = var.list_of_previously_created_resource
some_attribute = each.value.name
depends_on = [each.value]
}
Run Code Online (Sandbox Code Playgroud)
上面的语法当然不起作用,但我尽力给出了我想做的伪代码。重要的是,我不一定要循环遍历该类型的每个资源,"resource_type"而只是循环我在列表变量中手动定义的资源。
我在文档中没有看到任何描述执行此操作的最佳方法的内容,所以我在这里。
假设我从一个包含一些数据和一列数量的数据框开始:
In: df=pd.DataFrame({'first-name':['Jan','Leilani'],'Qty':[2,4]})
Out: Qty first-name
2 Jan
4 Leilani
Run Code Online (Sandbox Code Playgroud)
我想创建一个数据框,将数据复制并标记到新行中,次数等于每行上的数量。输出应该如下所示:
Qty first-name position
2 Jan 1
2 Jan 2
4 Leilani 1
4 Leilani 2
4 Leilani 3
4 Leilani 4
Run Code Online (Sandbox Code Playgroud)
我可以像这样使用 python 来做到这一点:
l=[]
x=0
for idx in df.index:
x=0
for _ in range(df.loc[idx]['Qty']):
x+=1
tempSrs=df.loc[idx]
tempSrs['position']=x
l.append(tempSrs)
outDf=pd.DataFrame(l)
Run Code Online (Sandbox Code Playgroud)
这是非常缓慢的。有没有办法使用熊猫函数来做到这一点?这实际上是一个“unpivot”,在pandas 中是“melt”,但我无法弄清楚如何使用melt 函数来实现这一点。
谢谢,
我想为不同数据帧中的每一行创建和堆叠一个数据帧。例如
我尝试通过迭代一个行并复制和堆叠另一个来做到这一点,但这是一个非常缓慢的过程。有没有原生的 Pandas 方法来做到这一点?
我在 Snowflake 中有一个表“MY_TABLE”,我想向其中添加一个标识列。我试过
ALTER TABLE "MY_TABLE"
ADD COLUMN primary_key int IDENTITY(1,1);
Run Code Online (Sandbox Code Playgroud)
但这返回
SQL compilation error: Cannot add column 'PRIMARY_KEY' with non-constant default to non-empty table 'MY_TABLE'.
Run Code Online (Sandbox Code Playgroud)
这在雪花中是不可能的吗?
为了解决这个限制,我尝试创建一个临时版本的表
CREATE OR REPLACE TABLE "MY_TABLE_TEMP" LIKE "MY_TABLE"
ALTER TABLE "MY_TABLE_TEMP" ADD COLUMN primary_key int IDENTITY(1,1)
INSERT INTO "MY_TABLE_TEMP"
SELECT * FROM "MY_TABLE";
Run Code Online (Sandbox Code Playgroud)
但现在我得到了错误
SQL compilation error: Insert value list does not match column list expecting <x+1> but got <x>
Run Code Online (Sandbox Code Playgroud)
哪种有意义,因为我没有传递主键。在这一点上,似乎我可能必须手动将列名的 x 列表(这是一个非常高的数字)输入到 sql 查询中,所以我想知道我是否只是做错了这一切。有没有其他人遇到过类似的问题?
pandas ×2
python ×2
attributes ×1
primary-key ×1
python-3.x ×1
resources ×1
snowflake-cloud-data-platform ×1
sql ×1
terraform ×1