Python 熊猫:多列的计数值
我目前正在做一个项目,我需要计算每年每种流派的受欢迎程度。数据集为我提供了电影,但每部电影都可以有多个类型,如下面的示例df所示(也有以“|”)分隔的混乱格式类型) 我的第一步是将每种类型划分为不同的列,以便使用str.split处理干净的数据Python 熊猫:多列的计数值,python,pandas,Python,Pandas,我目前正在做一个项目,我需要计算每年每种流派的受欢迎程度。数据集为我提供了电影,但每部电影都可以有多个类型,如下面的示例df所示(也有以“|”)分隔的混乱格式类型) 我的第一步是将每种类型划分为不同的列,以便使用str.split处理干净的数据 df[['Genre_1','Genre_2','Genre_3','Genre_4','Genre_5']] = df['genres'].str.split("|",expand=True) release_year Genre_1
df[['Genre_1','Genre_2','Genre_3','Genre_4','Genre_5']] = df['genres'].str.split("|",expand=True)
release_year Genre_1 Genre_2 Genre_3 Genre_4 Genre_5
0 2015 Action Adventure Science Fiction Thriller None
1 2015 Action Adventure Science Fiction Thriller None
2 2015 Adventure Science Fiction Thriller None None
3 2015 Action Adventure Science Fiction Fantasy None
4 2015 Action Crime Thriller None None
既然每部电影都有多部,我如何使用groupby语句来计算每种类型每年的受欢迎程度?看起来我想折叠我扩展的所有列,但保留每个列的年份键,理想情况下会导致如下结果:
release_year All genres
0 2015 Action
1 2015 Action
2 2015 Adventure
3 2015 Action
4 2015 Action
我真的非常感谢你在这方面的帮助。
非常感谢 我猜下面的内容将为您提供所需的输出
df = pd.DataFrame(
[
[2015, 'Action|Adventure|Science Fiction|Thriller'],
[2015, 'Action|Adventure|Science Fiction|Thriller'],
[2015, ' Action|Crime|Thriller']
],
columns=['release_year', 'genres']
)
df2 = df['genres'].str.split('|').apply(pd.Series)
df2.index = df.set_index(['release_year']).index
df2.stack().reset_index(['release_year']).rename(columns={0: 'All Genres'})
输出:
release_year All Genres
0 2015 Action
1 2015 Adventure
2 2015 Science Fiction
3 2015 Thriller
0 2015 Action
1 2015 Adventure
2 2015 Science Fiction
3 2015 Thriller
0 2015 Action
1 2015 Crime
2 2015 Thriller
为什么您想要的输出具有相同年份和相同类型的重复行?工作非常有魅力!谢谢!很高兴这有帮助。快乐编码。。
release_year All Genres
0 2015 Action
1 2015 Adventure
2 2015 Science Fiction
3 2015 Thriller
0 2015 Action
1 2015 Adventure
2 2015 Science Fiction
3 2015 Thriller
0 2015 Action
1 2015 Crime
2 2015 Thriller