对于我的一生,我无法弄清楚如何组合这两个数据框。我正在使用所有软件的最新版本,包括 Python、Pandas 和 Dask。
#pandasframe has 10k rows and 3 columns -
['monkey','banana','furry']
#daskframe has 1.5m rows, 1column, 135 partitions -
row.index: 'monkey_banana_furry'
row.mycolumn = 'happy flappy tuna'
我的 dask 数据框有一个字符串作为其访问索引, 但是当我这样做时
daskframe.loc[index_str]
它返回一个 dask 数据帧,但我认为它应该返回一个特定行。我不知道如何从该数据帧访问我需要的行/值。我想要的是输入索引,并输出一个特定值。
我做错了什么?
pandas.DataFrame.loc
也不会返回标量。
dask.dataframe.DataFrame.compute
这样您就可以获得 pandas 数据帧(因为 dask.dataframe.DataFrame.loc
返回 dask 数据帧)。只有这样,你才能使用 pandas .loc
。
假设 (
dfd
) 是您的 dask 数据框,请尝试以下操作:
dfd.loc[index_str].compute().loc[index_str, "happy flappy tuna"]
或者这个:
dfd.loc[index_str, "happy flappy tuna"].compute().iloc[0]
技巧是使用 .compute() 因为它......
将 Dask 数据帧转换为 Pandas 数据帧。
根据文档
因此,如果您想按特定名称过滤数据框,您可以这样做:
df[df['Names'] == 'MyName'].compute()
此外,如果你这样做
type(df)
,你会得到 dask.dataframe.core.DataFrame
,但是 type(df.compute())
会给你 pandas.core.frame.DataFrame
,所以你可以将结果视为任何 pandas 数据框。
只要考虑一下,通过这样做,您将像传统的 pandas 方式一样将数据存储在 RAM 中。