迭代 pandas 中唯一值的更快方法?
Quicker way to iterate over unique values in pandas?
我有一些 pandas 代码,我正在尝试 运行 一个大数据集,尽管使用了 apply,但它看起来本质上是迭代并且 运行ning 很慢。 .. 欢迎提出建议!
我正在尝试对我的数据进行分组。每行都有一个非唯一的事件 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)
虽然我尝试使用应用而不是循环,但它似乎仍然在遍历整个代码并花费很长时间。关于如何提高效率的任何想法?
如果需要由聚合值填充的新列,请使用 GroupBy.transform
而不是 apply
+ join
,但 transform
只能使用一列 Event_type
:
no_duplicates["Event_type"] = no_duplicates.groupby("URN").Event_type.transform('sum') > 0
我有一些 pandas 代码,我正在尝试 运行 一个大数据集,尽管使用了 apply,但它看起来本质上是迭代并且 运行ning 很慢。 .. 欢迎提出建议!
我正在尝试对我的数据进行分组。每行都有一个非唯一的事件 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)
虽然我尝试使用应用而不是循环,但它似乎仍然在遍历整个代码并花费很长时间。关于如何提高效率的任何想法?
如果需要由聚合值填充的新列,请使用 GroupBy.transform
而不是 apply
+ join
,但 transform
只能使用一列 Event_type
:
no_duplicates["Event_type"] = no_duplicates.groupby("URN").Event_type.transform('sum') > 0