小编c-g*_*cia的帖子

使用aws-cli 1.3.6在其他数据中列出实例名称

使用aws-cli 1.3.6我试图用名称和状态获得一个简单的ec2实例表.我一直在查看--query和JMESpath文档,我已经能够选择Map的"Value"项,其中"Key"项等于Name.这对于获取实例名称很有用.因此,下面的代码似乎工作

aws ec2 describe-instances --output table --query 'Reservations[].Instances[].Tags[?Key==`Name`].Value'
Run Code Online (Sandbox Code Playgroud)

并提供这个:

-------------------
|DescribeInstances|
+-----------------+
|  Name1          |
|  Name2          |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

但是,如果我想添加状态,事情就会像我预期的那样得到.运用

aws ec2 describe-instances --output table --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value,State.Name]'
Run Code Online (Sandbox Code Playgroud)

提供

-------------------
|DescribeInstances|
+-----------------+
|  Name1          |
|  stopped        |
|  Name2          |
|  stopped        |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

而不是具有名称和状态的两列表.

如果我们将输出转换为JSON,我们可以看到Tags选项返回一个列表(单元素列表),这可能是问题所在:

[
    [
        [
            "Name1"
        ],
        "stopped"
    ],
    [
        [
            "Name2"
        ],
        "stopped"
    ]
]
Run Code Online (Sandbox Code Playgroud)

我无法通过选择第一个元素将此列表转换为标量.这个,不起作用.返回一个空列表作为名称.

aws ec2 describe-instances --output json --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value[0],State.Name]'
Run Code Online (Sandbox Code Playgroud)

和此一样

aws ec2 describe-instances --output json --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value[][0],State.Name]'
Run Code Online (Sandbox Code Playgroud)

我解决这个问题的唯一方法是通过join函数.因为我只期待一个元素,所以可以,但我似乎有点hacky.

aws ec2 …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services aws-cli jmespath

28
推荐指数
1
解决办法
1万
查看次数

Pandas Bug ?:在某些情况下,分组的int64列的平均值保持为int64

我发现一个非常奇怪的(恕我直言)行为,一些数据从CSV文件加载到pandas.为了保护无辜者,让我们DataFrame说明变量是在变量中homes,其中包括以下列:

In [143]: homes[['zipcode', 'sqft', 'price']].dtypes
Out[143]:
zipcode     int64
sqft        int64
price       int64
dtype: object
Run Code Online (Sandbox Code Playgroud)

为了获得每个邮政编码的平均价格,我试过:

In [146]: homes.groupby('zipcode')[['price']].mean().head(n=5)
Out[146]:
           price
zipcode
28001     280804
28002     234284
28003     294111
28004    1355927
28005     810164
Run Code Online (Sandbox Code Playgroud)

奇怪的是,价格均值是一个int64,如下所示:

In [147]: homes.groupby('zipcode')[['price']].mean().dtypes
Out[147]:
price    int64
dtype: object
Run Code Online (Sandbox Code Playgroud)

我无法想象任何技术上的原因,为什么一些整数的平均值不会被提升为浮动.更重要的是,只需添加另一列,就可以使价格成为一个浮动64,正如我预期的那样:

In [148]: homes.groupby('zipcode')[['price', 'sqft']].mean().dtypes
Out[148]:
price       float64
sqft        float64
dtype: object

                  price          sqft
zipcode
28001     280804.690608  14937.450276
28002     234284.035176   7517.633166
28003     294111.278571  10603.096429
28004    1355927.097792  13104.220820
28005     810164.880952  19928.785714
Run Code Online (Sandbox Code Playgroud)

为了确保我没有遗漏一些非常明显的东西,我创建了另一个非常简单的DataFrame(df)但是,有了这个,这个行为没有出现: …

python csv pandas

5
推荐指数
1
解决办法
172
查看次数