【发布时间】:2019-06-17 22:06:31
【问题描述】:
我有一个如下所示的 pandas DF,我正在尝试将不同行中的值计数转换为以下格式:
COL1 COL2 COL3
C1 None None
C1 C2 None
C1 C1 None
C1 C2 C3
到
C1 C2 C3
1 0 0
1 1 0
2 0 0
1 1 1
我在这里找到了这个答案 (Count occurrences of items in Series in each row of a DataFrame)
这可以满足我的需要,但在我的数据集(400 万行)上非常慢。我试着用 400,000 行来做,但它仍然没有以可接受的速度运行。
我相信它是通过大量数据集进行查找的列表,并且 apply 本质上是一个 for 循环。是巨大的循环减慢了这个过程。这里的潜在解决方案基本上提到不要使用 Apply,这会使这里的执行变得乏味,因为我的列表中有 C1、C2...C100 和 10 个垂直列来验证计数。关于我可以在这里尝试什么来提高性能的任何提示?
下面是代码:
df_store = df.apply(pd.Series.value_counts, axis=1)[list_lookup].fillna(0)
【问题讨论】:
标签: python-3.x pandas numpy pandas-apply