python将输入值转化为元组_python - Pandas将数据帧转换为元组数组

动机

许多数据集足够大,我们需要关注速度/效率。 所以我本着这种精神提供这种解决方案。 它恰好也很简洁。

为了便于比较,让我们删除zip列

df = data_set.drop('index', 1)

我建议使用zip和理解

list(zip(*[df[c].values.tolist() for c in df]))

[('2012-02-17', 24.75, 25.03),

('2012-02-16', 25.0, 25.07),

('2012-02-15', 24.99, 25.15),

('2012-02-14', 24.68, 25.05),

('2012-02-13', 24.62, 24.77),

('2012-02-10', 24.38, 24.61)]

如果我们想处理特定的列子集,它恰好也是灵活的。 我们假设我们已经显示的列是我们想要的子集。

list(zip(*[df[c].values.tolist() for c in ['data_date', 'data_1', 'data_2']))

[('2012-02-17', 24.75, 25.03),

('2012-02-16', 25.0, 25.07),

('2012-02-15', 24.99, 25.15),

('2012-02-14', 24.68, 25.05),

('2012-02-13', 24.62, 24.77),

('2012-02-10', 24.38, 24.61)]

以下所有产生相同的结果

zip

zip

zip

zip

什么更快?

zip并且理解力更快

%timeit [tuple(x) for x in df.values]

%timeit list(map(tuple, df.itertuples(index=False)))

%timeit df.to_records(index=False).tolist()

%timeit list(map(tuple,df.values))

%timeit list(zip(*[df[c].values.tolist() for c in df]))

小数据

10000 loops, best of 3: 55.7 µs per loop

1000 loops, best of 3: 596 µs per loop

10000 loops, best of 3: 38.2 µs per loop

10000 loops, best of 3: 54.3 µs per loop

100000 loops, best of 3: 12.9 µs per loop

大数据

10 loops, best of 3: 58.8 ms per loop

10 loops, best of 3: 43.9 ms per loop

10 loops, best of 3: 29.3 ms per loop

10 loops, best of 3: 53.7 ms per loop

100 loops, best of 3: 6.09 ms per loop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值