【问题标题】:Python Pandas turn a dataframe into counts list or a vectorPython Pandas 将数据框转换为计数列表或向量
【发布时间】:2021-11-16 20:47:07
【问题描述】:

我创建了以下熊猫数据框:

+------+-------+------------+
|userID|movieID|timesWatched|
+------+-------+------------+
|u1    |mv1    |5           |
|u1    |mv2    |2           |
|u2    |mv1    |1           |
|u3    |mv4    |30          |
+------+-------+------------+ 

我还有一个包含 6 部电影的列表:

 movies =['mv0', 'mv1', 'mv2', 'mv3', 'mv4', 'mv5']

我想做的是为每个用户创建一个这样的列表:

u1 : [0, 5, 2, 0, 0, 0]
u2 : [0, 1, 0, 0, 0, 0]
u2 : [0, 0, 0, 0, 30, 0]

有没有一种很好的 pythonic / pandas 方式,避免混淆 for 循环?

【问题讨论】:

    标签: python python-3.x pandas list dataframe


    【解决方案1】:

    您可以使用categorical datapivot_table 并将to_dict 转换为“列表”格式。

    pivot_tabledropna=False 选项与分类数据相结合可确保拥有所有类别,即使所有类别都是 NaN。

    movies =['mv0', 'mv1', 'mv2', 'mv3', 'mv4', 'mv5']
    
    (df.assign(movieID=pd.Categorical(df['movieID'], categories=movies))
       .pivot_table(index='movieID',
                    columns='userID',
                    values='timesWatched',
                    dropna=False, fill_value=0)
       .to_dict('list')
    )
    

    【讨论】:

      猜你喜欢
      • 2015-04-01
      • 2021-09-27
      • 2017-09-25
      • 1970-01-01
      • 2017-06-22
      • 2021-03-22
      • 2014-08-19
      • 2020-09-02
      相关资源
      最近更新 更多