将属性附加到 Pandas 和 Dask 中的数据集

Keep Attributes attached to dataset in Pandas and Dask

我一直使用 Pandas 和 Dask。我还有一些自定义的 classes 和函数,我经常将它们用于不同的分析,我总是不得不编辑它们以说明 Dask 或 Pandas。我一直发现自己处于这样一种情况,我希望我可以为我正在分析的数据集分配属性,最大限度地减少来自 dask 的 compute 命令,并且还可以在我切换数据类型时更轻松地管理功能。实际上类似于:

import pandas as pd
import dask.dataframe as dd
from pydataset import data

df = data('titanic')

setattr(df, 'vals12', 1)

test = dd.from_pandas(df, npartitions = 2)
test.vals12 #would still contain the attribute vals12

df  = test.compute()
df.vals12 #would still contain the attribute vals12

但是,我不知道有什么方法可以在不编辑基础包的情况下实现这一点 (Pandas / Dask)。因此,我想知道是否有一种方法可以在不创建新的 class(或包的静态版本)的情况下实现上述示例,或者是否有一种方法可以将回购“分支”为非- public 方式(允许添加我的编辑,但仍然允许我轻松获得未来的功能)?

在即将发布的 Dask 版本中,您将能够使用 pandas 1.0 中最近的 attrs 功能来执行此操作。现在,您可以从 Github pip install dask 来使用此功能。

import pandas as pd
import dask.dataframe as dd

df = pd.DataFrame({
    "a":[0,1,2],
    "b":[2,3,4]
})
df.attrs["vals12"] = 1

ddf = dd.from_pandas(df, npartitions=2)
ddf.attrs
{'vals12': 1}