小编Mau*_*ice的帖子

datetime64[ns] pandas 列的 apply(str) 和 astype(str) 的不同行为

我正在处理 pandas 中的日期时间信息,并希望将一堆datetime64[ns]列转换为str. 我注意到这两种方法的行为有所不同,我预计会产生相同的结果。

这是一个MCVE

import pandas as pd

# Create a dataframe with dates according to ISO8601
df = pd.DataFrame({"dt_column": ["2023-01-01", "2023-01-02", "2023-01-02"]})

# Convert the strings to datetimes
# (I expect the time portion to be 00:00:00)
df["dt_column"] = pd.to_datetime(df["dt_column"])

df["str_from_astype"] = df["dt_column"].astype(str)
df["str_from_apply"] = df["dt_column"].apply(str)

print(df)
print()
print("Datatypes of the dataframe")
print(df.dtypes)
Run Code Online (Sandbox Code Playgroud)

输出

   dt_column str_from_astype       str_from_apply
0 2023-01-01      2023-01-01  2023-01-01 00:00:00
1 2023-01-02      2023-01-02  2023-01-02 00:00:00
2 2023-01-02      2023-01-02  2023-01-02 00:00:00 …
Run Code Online (Sandbox Code Playgroud)

python datetime pandas

15
推荐指数
1
解决办法
788
查看次数

Pythons lru_cache 在内部函数上似乎不起作用

我试图用来functools.lru_cache缓存内部函数的结果,但缓存似乎没有按预期工作。

我有一个函数执行一些逻辑,然后调用一个相当昂贵的函数。我想缓存昂贵的函数调用的结果,尽管我只是将其应用于lru_cache内部函数。不幸的是,行为并不符合预期——即使内部函数的参数相同,每次都会调用昂贵的函数。

我创建了一个(简化的)测试用例来显示行为:

import unittest
from functools import lru_cache
from unittest.mock import patch

def expensive_function(parameter: str) -> str:
    return parameter

def partially_cached(some_parameter: str) -> str:

    @lru_cache
    def inner_function(parameter: str):
        return expensive_function(parameter)

    result = inner_function(some_parameter)

    print(inner_function.cache_info())

    return result

class CacheTestCase(unittest.TestCase):

    def test_partially_cached(self):
        
        with patch(self.__module__ + ".expensive_function") as expensive_mock:

            expensive_mock.return_value = "a"

            self.assertEqual(partially_cached("a"), "a")
            self.assertEqual(partially_cached("a"), "a")

            # If the cache works, I expect the expensive function
            # to be called just once for the same parameter
            expensive_mock.assert_called_once()

if …
Run Code Online (Sandbox Code Playgroud)

python caching python-3.x

11
推荐指数
1
解决办法
2722
查看次数

UnknownEndpoint:无法访问主机:“localhost”。当尝试使用express和dynamodb local连接到本地主机时

我正在使用 docker compose 创建两个容器,一个用于 dynamodb local,一个用于 Nodejs Express 应用程序。

docker-compose.dev.yml

version: '3'

services:
  dynamodb-local:
    command: "-jar DynamoDBLocal.jar -sharedDb -optimizeDbBeforeStartup -dbPath ./data"
    image: "amazon/dynamodb-local:latest"
    container_name: dynamodb-local
    ports:
      - "8000:8000"
    volumes:
      - "./docker/dynamodb:/home/dynamodblocal/data"
    working_dir: /home/dynamodblocal
    networks:
      - dynamodb-network

  node-app:
    depends_on:
        - dynamodb-local
    container_name: dev-nodejs-backend
    ports:
      - '3000:3000'
    volumes:
      - .:/usr/src/node-app
    environment:
      AWS_ACCESS_KEY_ID: 'DUMMYIDEXAMPLE'
      AWS_SECRET_ACCESS_KEY: 'DUMMYEXAMPLEKEY'
    networks:
      - dynamodb-network
    command: yarn dev -L

networks:
  dynamodb-network:
    driver: bridge
Run Code Online (Sandbox Code Playgroud)

Dockerfile

FROM node:alpine

RUN mkdir -p /usr/src/node-app && chown -R node:node /usr/src/node-app

WORKDIR /usr/src/node-app

COPY package.json …
Run Code Online (Sandbox Code Playgroud)

yaml amazon-web-services node.js amazon-dynamodb docker

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

Python Shuutil.copy 如果我有一个重复的文件,它会复制到新位置

我正在使用shutil.copypython 中的方法。

我找到了下面列出的定义:

def copyFile(src, dest):
    try:
        shutil.copy(src, dest)
    # eg. src and dest are the same file
    except shutil.Error as e:
        print('Error: %s' % e)
    # eg. source or destination doesn't exist
    except IOError as e:
         print('Error: %s' % e.strerror)
Run Code Online (Sandbox Code Playgroud)

我正在访问循环内的定义。该循环基于每次更改的字符串。代码查看目录中的所有文件,如果看到文件中的一部分字符串,则将其复制到新位置

我很确定会有重复的文件。所以我想知道会发生什么。

他们会被复制,还是会失败?

python shutil

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

与 Oracle 数据库的 Powershell 连接

我在使用Oracle.ManagedDataAccess.dll.

我在 Technet 上遵循了教程,最终得到了以下代码:

add-type -path "C:\oracle\product\12.1.0\client_1\ODP.NET\managed\common\Oracle.ManagedDataAccess.dll"
$username = "XXXX"
$password = "XXXX"
$data_source = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXX)(PORT=XXXX))(CONNECT_DATA = (SERVER=dedicated)(SERVICE_NAME=XXXX)))"
$connection_string = "User Id=$username;Password=$password;Data Source=$data_source"

try{
    $con = New-Object Oracle.ManagedDataAccess.Client.OracleConnection($connection_string)

    $con.Open()
} catch {
    Write-Error (“Can’t open connection: {0}`n{1}” -f `
        $con.ConnectionString, $_.Exception.ToString())
} finally{
    if ($con.State -eq ‘Open’) { $con.close() }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到此错误:

C:\Users\XXXX\Desktop\oracle_test.ps1 : Can’t open connection: User Id=XXXX;Password=XXXX;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXX)(PORT=XXXX))(CONNECT_DATA = 
(SERVER=dedicated)(SERVICE_NAME=XXXX)))
System.Management.Automation.MethodInvocationException: Exception calling "Open" with "0" argument(s): "The type initializer for 'Oracle.ManagedDataAccess.Types.TimeStamp' threw an …
Run Code Online (Sandbox Code Playgroud)

oracle powershell

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

ECS 任务定义 - 每个任务的容器还是任务内的多个容器?

我在网上搜索了一些有关任务定义和容器部署的实用信息,但找不到任何现实生活中的示例。

是否存在需要将容器分散到多个任务而不是在 1 个任务中运行多个容器的情况?

例如,如果我有一个后端服务和一个前端服务,我应该将它们放在同一个任务中,以便它们共享相同的网络并位于同一主机上,还是应该为它们创建 2 个单独的任务?

amazon-web-services amazon-ecs

6
推荐指数
1
解决办法
3200
查看次数

DynamoDB 中的 BatchPutItem 与 PutItem

我有一个用例,我们没有得到太多在单个请求中存在要更新的条目列表的情况,并且大多数情况下,只有一个条目被请求更新。但将来,这种情况可能会增长,因此我正在考虑使用 BatchPutItem 而不是 PutItem。

  • 当请求中只有一个项目需要更新时,使用 BatchPutItem 是否有任何缺点?
  • 我认为消耗的 RCU 是相同的,但是是否有任何其他差异,或者当请求中只有一个条目时,BatchPutItem 的行为与 PutItem 相同?

performance latency amazon-web-services throughput amazon-dynamodb

6
推荐指数
2
解决办法
3435
查看次数

仅在 VPC 内通过函数 URL 调用 AWS Lambda 函数

我在 AWS 的 VPC 内有一个 lambda 函数。我想附加 http 处理程序(函数 URL)。

问题是,如果我启用函数 URL,那么它会创建一个公共端点。

我不想使用的替代方案

  • 启用 AWS_IAM 安全性(然后调用者将需要使用 AWS SKD 并获取令牌等)
  • API网关触发器(我已经使用API​​网关作为kubernetes Ingress的代理,我不想偏离这一点)
  • ALB(我已经在使用 k8s ingress,它会创建 ALB,所以我希望通过代码手动创建代理,而不是使用 lambda 配置)

有没有一种方法可以创建 AWS Lambda 函数 URL,但它只能在 VPC 内访问而不涉及 AWS SKD?(喜欢wget URL

amazon-web-services amazon-vpc aws-lambda

6
推荐指数
1
解决办法
4600
查看次数

DynamoDB 按需扩展和限制

我目前正在研究 DynamoDB 的按需设置。我们偶尔会在高流量高峰期间看到一些限制,它跨越所有索引,因此不特定于某个分区。所有与按需容量模式相关的 DynamoDB 文档似乎都表明,一旦设置了新的峰值使用量,它基本上就无限期地达到峰值。我的假设是否正确,还是在一段时间后它会重置/缩小?是否有任何地方记录了按需容量模式的发电机扩展的内部结构?

我想通过配置任意高容量并切换回按需容量模式来预热我的低容量表,只是想最终发现该策略会随着时间的推移而持续下去吗?

database amazon-web-services nosql amazon-dynamodb devops

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

如何使用 python3 在 aws 上使用过滤表达式作为嵌套映射属性?

我一直在尝试扫描 DynamoDB 以检查名为“可交付成果”的嵌套地图属性中的特定值。然而,使用带有过滤表达式的扫描会导致空结果。

import boto3
result = []
dynamo_client = boto3.client("dynamodb")
paginator = dynamo_client.get_paginator("scan")

operation_parameters = {
    'FilterExpression': "#Deliverable= :deliverable",
    'ExpressionAttributeNames': {
        '#Deliverable': 'deliverables.fc986523-a666-478e-8303-2a1c3c1dc4ba'
    },
    'ExpressionAttributeValues': {
    ':deliverable':  {
    "M": {
     "read": {
      "BOOL": True
     },
     "upload": {
      "BOOL": True
     },
     "write": {
      "BOOL": True
     }
    }
    }
  }
}
for page in paginator.paginate(TableName="TableName", **operation_parameters):
    result.append(page["Items"])

print(result)
Run Code Online (Sandbox Code Playgroud)

dynamo 数据库中的项目如下所示:

[
   [
      {
         "deliverables":{
            "M":{
               "7397d832-fefb-4ba2-97a1-0f6e73d611d9":{
                  "M":{
                     "read":{
                        "BOOL":true
                     },
                     "upload":{
                        "BOOL":true
                     },
                     "write":{
                        "BOOL":true
                     }
                  }
               },
               "fc986523-a666-478e-8303-2a1c3c1dc4ba":{
                  "M":{
                     "read":{ …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services python-3.x amazon-dynamodb

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