如何转换dask数据帧(将列转换为行)以接近整洁的数据原则

2024-06-28 11:53:29 发布

您现在位置:Python中文网/ 问答频道 /正文

TLDR:我从一个dask包创建了一个dask数据帧。dask数据帧将每个观察(事件)视为一列。因此,我没有为每个事件设置行数据,而是为每个事件设置一个列。我们的目标是将列转换为行,就像pandas可以使用df.T来转置数据帧一样

详细信息: 我有sample twitter data from my timeline here。为了达到我的起点,下面是将json从磁盘读入dask.bag并将其转换为dask.dataframe的代码

import dask.bag as db
import dask.dataframe as dd
import json


b = db.read_text('./sampleTwitter.json').map(json.loads)
df = b.to_dataframe()
df.head()

问题我的所有个人事件(即tweet)都记录为columns vice rows。为了与tidy原则保持一致,我希望为每个事件设置行。^{} has a transpose method for dataframes和磁盘阵列具有数组的转置方法。我的目标是做同样的转置操作,但在dask数据帧上。我该怎么做?在

  1. 将行转换为列

编辑解决方案

这段代码解决了最初的转置问题,通过定义要保留的列和删除其余的列来清理Twitter json文件,并通过对序列应用函数来创建一个新列。然后,我们将一个更小的、干净的文件写入磁盘。在

^{pr2}$

Tags: 文件数据代码importjson目标dataframedf
1条回答
网友
1楼 · 发布于 2024-06-28 11:53:29

我想你可以通过绕过bag得到你想要的结果,代码如下

import glob

import pandas as pd
import dask.dataframe as dd
from dask.delayed import delayed

filenames = glob.glob('sampleTwitter*.json')
dfs = [delayed(pd.read_json)(fn, 'records') for fn in filenames]
ddf = dd.from_delayed(dfs)

相关问题 更多 >