我有一些panda代码,我正试图在大数据集上运行,尽管使用了apply,但它看起来基本上是在迭代和缓慢运行。。。欢迎提出建议!
我正在尝试将我的数据分组。每一行都有一个非唯一的事件ID,每个事件ID可以包含多个事件。如果这些事件中的任何一个是特定类型的,我希望具有该ID的每一行都有一个特定的标志-例如,该类型的事件发生在该ID中。然后我希望只导出具有ID的数据帧,该标志显示事件是否发生在该ID.中
这是我正在使用的代码:
no_duplicates = df.drop_duplicates(subset=["ID])
def add_to_clean(URN):
single_df = df[df["URN"] == URN].copy()
return single_df["Event_type"].sum() > 0
no_duplicates["Event_type"] = no_duplicates["ID"].swifter.apply(add_to_clean)
虽然我尝试过使用apply而不是循环,但它似乎仍然在整个代码中迭代,而且花费了很长时间。关于如何提高效率,有什么想法吗?
如果需要用聚合值填充新列,请使用GroupBy.transform
,而不是apply
+join
,但transform
只能与一列Event_type
:一起使用
no_duplicates["Event_type"] = no_duplicates.groupby("URN").Event_type.transform('sum') > 0