【发布时间】:2019-12-14 08:55:30
【问题描述】:
我想知道在 pandas 数据框中创建列的最有效方法是哪种方法,如果给定列表中存在 id_row 将返回 1 或 0。
我目前正在使用 lambda 函数来应用结果。我的问题是它需要很长时间,因为我的数据框大约有 2M 行,并且它检查的列表在 200k 到 100k 之间。如果我没记错的话,这是二次时间(不过我真的不确定),在这种情况下,它的运行速度真的很慢,给出了对象的大小。
最糟糕的是,我必须为 100 多个其他(不同的)数据帧重复这段代码。
函数如下:
lst_to_add = [1,2,3.......,n]
df_table['TEST'] = df_table['id_row'].apply(lambda x : 1 if x i lst_to_add else 0)
我想知道如何使代码(方式)更有效。 我可能想到了一个使用递归函数的“分而治之”的解决方案,但我真的很愿意接受任何建议。
最后一件事。我也有记忆的限制,因此我更喜欢一种比其他方法花费更多时间但内存更少的方法(如果我有选择的话)。
【问题讨论】:
标签: python pandas time-complexity