python - 如何根据数据框python中列中列表的值进行分组

标签 python python-3.x pandas dataframe pandas-groupby

我有一个像这样的 Pandas 电影数据框

id, name,     genre, release_year 
1    A    [a,b,c]     2017
2    B    [b,c]       2017
3    C    [a,c]       2010
4    D    [d,c]       2010
....

我想根据流派列表中的值对电影进行分组。 我的预期输出是:

year, genre, number_of_movies
2017  a       1
2017  b       2
2017  c       2
2010  a       1
2010  c       2 
...

有人可以帮我实现这个目标吗?

最佳答案

您可以通过构造函数创建新的DataFrame,通过stack reshape 。并用于计数 groupbysize :

df1 = (pd.DataFrame(df['genre'].values.tolist(), index=df['release_year'].values)
         .stack()
         .reset_index(name='genre')
         .groupby(['release_year','genre'])
         .size()
         .reset_index(name='number_of_movies'))

print (df1)
   release_year genre  number_of_movies
0          2010     a                 1
1          2010     c                 2
2          2010     d                 1
3          2017     a                 1
4          2017     b                 2
5          2017     c                 2

关于python - 如何根据数据框python中列中列表的值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49220479/

相关文章:

python - 在 Numpy 中制作特殊的对角矩阵

python - 在没有 tibraker 策略的情况下获取 pandas 数据框的最大行

python - 如何在 python 中切片进程 itertools.product?

python - BeautifulSoup 无法识别 select 标签上 name 属性的值

python - 如何在 cheetah 模板中将 float 截断至小数点后两位?

python - 如何使用 "select_for_update()"在 Django 中获取对象?

python-3.x - 如何删除具有相同值的行?合并具有相同前缀的列

python - 使用正则表达式从字符串中提取所有电子邮件

python - 通过循环函数中的每一行来修改数据框

python - 如何只保留 pandas DataFrame 中具有多个值的行?