小编sep*_*deh的帖子

将 CSV 数据从 S3 加载到 Jupyter Notebook 中

我在 Amazon Cloud 的 S3 存储桶中有多个 CSV 文件 (50 GB)。我正在尝试使用以下代码在 Jupyter Notebook(使用 Python3 内核)中读取这些文件:

import boto3
from boto3 import session
import pandas as pd

session = boto3.session.Session(region_name='XXXX')
s3client = session.client('s3', config = boto3.session.Config(signature_version='XXXX'))
response = s3client.get_object(Bucket='myBucket', Key='myKey')

names = ['id','origin','name']
dataset = pd.read_csv(response['Body'], names=names)
dataset.head() 
Run Code Online (Sandbox Code Playgroud)

但是当我运行代码时遇到以下错误:

valueError:无效的文件路径或缓冲区对象类型:类“botocore.response.StreamingBody”

我遇到了这个关于 pandas 和 boto3 对象尚不兼容的错误报告。

我的问题是,我还能如何将这些 CSV 文件从 S3 存储桶导入到在云上运行的 Jupyter Notebook 中。

python csv pandas boto3 jupyter-notebook

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

将Pandas数据帧分组一列,根据另一列删除行

我有一个pandas数据框,如下所示:

     UNIT        MACHINE
1    a100        001
2    a100        002
3    a100        003
4    a100        001
5    b222        001
6    b222        002
7    b222        002
8    b222        003
Run Code Online (Sandbox Code Playgroud)

我想基于"UNIT"对其进行分组,并删除没有[001,002,003]"MACHINE"序列的行.这意味着因为UNIT"a100"具有序列[001,002,003,001],所以它应该被丢弃,但UNIT"b222"仍然存在,因为无论MACHINE 002的重复如何,序列都是正确的.

输出应如下所示:

     UNIT        MACHINE
5    b222        001
6    b222        002
7    b222        002
8    b222        003
Run Code Online (Sandbox Code Playgroud)

序列[001,002,003]是我在这里作为例子编写的可接受的MACHINE序列之一.有几种这样的序列,所有这些序列都是单调递增的.

我应该如何组合GroupBy并执行此操作?

python group-by dataframe pandas pandas-groupby

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