首页 > 解决方案 > 计算列表项并存储在与列表项对应的数据框列中

问题描述

我正在尝试遍历 Pandas Dataframe 中的系列,并将列表项的计数存储在与每一行的项目同名的另一列中。该系列就像一个列表列表,所以基本上我试图将该列表列表转换为一个单热向量,但该向量中的每个项目都是一列。可以出现的项目数量有限。

以下是我的方法。它工作得很好,但它的速度很慢。我在此处发布此内容是为了尝试找到一种更好、更“pythonic”的方法来做到这一点。

N_Series = len(df.Category)
for i in range(N_Series):
    itemList = df.Category[i]
    N_List = len(itemList)
    for k,v in Counter(itemList).items():
         df[k][i] = v/N_List

以下是一个示例,Category 列是一个列表,可以看到相应的 one-hot 列保存列表中的项目数/项目数。

在此处输入图像描述

提前致谢!

标签: pythonpython-3.xpandaslistcounter

解决方案


让我们试试explode+corsstab

s=df.Category.explode()
s=pd.crosstab(s.index,s,normalize='index')
df=df.join(s)

推荐阅读