小编pie*_*e_j的帖子

将 dask 数据帧写入镶木地板:“TypeError”

我正在尝试使用 Dask 编写镶木地板文件。目标是使用它的repartition功能,但似乎我无法写出一个简单的镶木地板文件,而不进行这repartition一步......

这是我用来从 pyarrow 创建 parquet 文件的代码,通过 dask 读回它,然后再次写入。

import pandas as pd
import numpy as np
import pyarrow as pa
import pyarrow.parquet as pq
import dask.dataframe as dd

file = 'example.parquet'
file_res = 'example_res.parquet'

# Generate a random df
df = pd.DataFrame(np.random.randint(100,size=(100000, 20)),columns=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T'])

# Write 1st parquet file with pyarrow
table = pa.Table.from_pandas(df)
pq.write_table(table, file, version='1.0')

# Read it back with Dask, and write it again
dd_df = dd.read_parquet(file)
dd_df.to_parquet(file_res)
Run Code Online (Sandbox Code Playgroud)

最后一个写入步骤以 结束TypeError: expected …

python parquet dask

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

使用 pyarrow 按大小重新分区 pyarrow 表并写入多个镶木地板文件?

正如标题所述,我想通过使用 pyarrow 并写入多个镶木地板文件,按大小(或行组大小)重新分区 pyarrow 表。

我查看了 pyarrow 文档,并确定了分区数据集章节,这似乎是一个方向。不幸的是,它表明可以按列内容分区,但不能按大小(或行组大小)分区。

那么,从一张表开始,如何控制写入步骤,以便以受控大小 x MB 写入多个文件?(或行组大小)

import pandas as pd
import numpy as np
import pyarrow as pa
import pyarrow.parquet as pq

file = 'example.parquet'
file_res = 'example_res'

# Generate a random df
df = pd.DataFrame(np.random.randint(100,size=(100000, 20)),columns=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T'])
table = pa.Table.from_pandas(df)

# With this command, I can write a single parquet file that contains 2 row groups.
pq.write_table(table, file, version='2.0', row_group_size=50000)

# I can read it back and try to write it as a partitioned …
Run Code Online (Sandbox Code Playgroud)

python partition parquet pyarrow

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

获取滚动窗口中的第一个和最后一个值

初始问题陈述

使用 pandas,我想应用可用于 resample() 的函数,但不适用于rolling()。

这有效:

df1 = df.resample(to_freq,
                  closed='left',
                  kind='period',
                   ).agg(OrderedDict([('Open', 'first'),
                                      ('Close', 'last'),
                                                        ]))
Run Code Online (Sandbox Code Playgroud)

这不会:

df2 = df.rolling(my_indexer).agg(
                 OrderedDict([('Open', 'first'),
                              ('Close', 'last') ]))
>>> AttributeError: 'first' is not a valid function for 'Rolling' object

df3 = df.rolling(my_indexer).agg(
                 OrderedDict([
                              ('Close', 'last') ]))
>>> AttributeError: 'last' is not a valid function for 'Rolling' object
Run Code Online (Sandbox Code Playgroud)

您对将滚动窗口的第一个和最后一个值保留在两个不同的列中有何建议?

编辑 1 - 使用可用的输入数据

import pandas as pd
from random import seed
from random import randint
from collections import OrderedDict

# DataFrame
ts_1h = pd.date_range(start='2020-01-01 …
Run Code Online (Sandbox Code Playgroud)

python pandas rolling-computation

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

如何设置 pyarrow 表列的“类别”数据类型?

我知道在 parquet 文件中使用category.pandas 编写 pandas 时可以保留类型。DataFrameto_parquet

一开始,就我而言,我已经有一个 pyarrow Table。我可以将其一列设置为具有该category类型吗?如果是,怎么办?(我无法在 Google 和 pyarrow 文档中找到提示)

谢谢你的帮助!最好的,

python parquet pyarrow

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