猿问

改进熊猫 tolist() 性能

我有以下操作需要1s在具有 200 列的 Pandas 数据帧上执行:


for col in mycols:

    values = [str(_item) if col_raw_type == 'object' else '{:f}'.format(_item) 

     for _item in df[col_name].dropna().tolist() 

     if (_item is not None) and str(_item)]

有没有更优化的方法来做到这一点?好像tolist操作有点慢?


我在这里尝试做的是转换如下内容:


field         field2

'2014-01-01'  1.0000000

'2015-01-01'  nan

变成这样:


values_of_field_1 = ['2014-01-01', '2015-01-01']

values_of_field_2 = [1.00000,]

所以我可以推断列的类型。例如,我想要的最终产品是:


type_of_field_1 = DATE # %Y-%m-%d

type_of_field_2 = INTEGER #


慕标5832272
浏览 196回答 2
2回答

江户川乱折腾

如果您认为 tolist() 使您的代码变慢,那么您可以删除 tolist()。根本不需要使用 tolist() 。下面的代码会给你相同的输出。for col in mycols:    values = [str(_item) if col_raw_type == 'object' else '{:f}'.format(_item)      for _item in df[col_name].dropna()     if (_item is not None) and str(_item)]
随时随地看视频慕课网APP

相关分类

Python
我要回答