我正在处理一个大型数据集,需要将某些列组合成一个列表。挑战在于,选择的列数取决于另一个键值,每行都不同。
例子:
原始数据集:
Key Col1 Col2 Col3 Col4 Col5 NonrelatedCols
1 a b c d e ...
3 r b x d c ...
2 k d q l w ...
0 w a c s w ...
预期结果:
Key List NonrelatedCols
1 [a] ...
3 [r,b,x] ...
2 [k,d] ...
0 [] ...
主要挑战在于代码的性能。遍历行,不是最佳方法,我正在寻找一种更有效的方法。
我试图只选择目标列,然后使用该agg(list,axis=1)功能。问题是,没有办法根据键值聚合列。看来,我仍然必须对所有行进行迭代,然后在组合列中删除过多的值
Cols = ['Col1', 'Col2', 'Col3','Col4','Col5']
CombinedList = rawData[Cols].agg(list,axis=1)
for i in range(rawData.shape[0]):
CombinedList[i]=CombinedList[i][:rawData['Key'][i]]
总结一下,有没有办法简化代码,所以我不需要遍历所有行?
尚方宝剑之说
哆啦的时光机
相关分类