我有avro数据和以下键:“id,标签,功能”。 id和label是字符串,而features是float的缓冲区。你知道吗
import dask.bag as db
avros = db.read_avro('data.avro')
df = avros.to_dataframe()
convert = partial(np.frombuffer, dtype='float64')
X = df.assign(features=lambda x: x.features.apply(convert, meta='float64'))
我最终得到了这个MCVE
label id features
0 good a [1.0, 0.0, 0.0]
1 bad b [1.0, 0.0, 0.0]
2 good c [0.0, 0.0, 0.0]
3 bad d [1.0, 0.0, 1.0]
4 good e [0.0, 0.0, 0.0]
我想要的结果是:
label id f1 f2 f3
0 good a 1.0 0.0 0.0
1 bad b 1.0 0.0 0.0
2 good c 0.0 0.0 0.0
3 bad d 1.0 0.0 1.0
4 good e 0.0 0.0 0.0
我尝试了一些类似熊猫的方法,也就是说df[['f1','f2','f3']] = df.features.apply(pd.Series)
不像熊猫那样工作。你知道吗
我可以像这样绕着一圈走
for i in range(len(features)):
df[f'f{i}'] = df.features.map(lambda x: x[i])
但在实际的用例中,我有上千个特性,这些特性会遍历数据集上千次。你知道吗
实现预期结果的最佳方式是什么?你知道吗
编辑:比原来快2倍
编辑:编辑:构建数据帧的更快方法比原始方法提高了8倍:
相关问题 更多 >
编程相关推荐