将pandas中的数据帧转换为上的另一个数据帧

2024-06-01 22:44:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经从https://figshare.com/articles/On_screen_movie_kill_counts_for_hundreds_of_films/889719加载了一个csv“Body Count dataset”作为数据帧到我的jupyter笔记本中。
我的任务是做线性回归,以预测电影MPAA评级。我听说,我的数据向量X应该包含以下列:Body\u Count、IsAction、IsThriller等等…
不幸的是,我不知道如何从我的数据集中获得这些统计数据,因为每一种电影类型都被贴上了“惊悚动作剧”的标签。
你知道怎么做吗?你知道吗


Tags: 数据httpscomfor电影oncountbody
2条回答

签出pandas.get_dummies

df = pd.DataFrame({'genre': ['action', 'thriller', 'drama'], 'kills':[50,100,150]})
print(df)
dummies = pd.get_dummies(df['genre'])
df = pd.concat([df,dummies], axis=1)
df = df.drop('genre',1)
print(df)

##   End pasted text  
      genre  kills
0    action     50
1  thriller    100
2     drama    150
   kills  action  drama  thriller
0     50     1.0    0.0       0.0
1    100     0.0    0.0       1.0
2    150     0.0    1.0       0.0

你可以用

genres = df.Genre.str.split('|', expand=True)

为各种流派类型创建新列。然后将其与您的数据结合起来,并将pd.get_dummies().sum()一起使用:

df = pd.concat([df.drop('Genre', axis=1), genres], axis=1)
df = df.set_index(['Film', 'Year', 'Body_Count', 'MPAA_Rating', 'Director', 'Length_Minutes', 'IMDB_Rating']).stack().reset_index(-1, drop=True)
df.columns = ['Genre']

df = pd.get_dummies(df).groupby(level=['Film', 'Body_Count']).sum()
df.head()

                                 Fantasy   ...     Horror  Music  Musical  \
Film                 Body_Count            ...                              
24 Hour Party People 7               0.0   ...        0.0    1.0      0.0   
28 Days Later        53              0.0   ...        1.0    0.0      0.0   
28 Weeks Later       212             0.0   ...        1.0    0.0      0.0   
30 Days of Night     67              0.0   ...        1.0    0.0      0.0   
300                  600             1.0   ...        0.0    0.0      0.0   

                                 Mystery  Romance  Sci-Fi  Sport  Thriller  \
Film                 Body_Count                                              
24 Hour Party People 7               0.0      0.0     0.0    0.0       0.0   
28 Days Later        53              0.0      0.0     1.0    0.0       1.0   
28 Weeks Later       212             0.0      0.0     1.0    0.0       1.0   
30 Days of Night     67              0.0      0.0     0.0    0.0       1.0   
300                  600             0.0      0.0     0.0    0.0       0.0   

                                 War  Western  
Film                 Body_Count                
24 Hour Party People 7           0.0      0.0  
28 Days Later        53          0.0      0.0  
28 Weeks Later       212         0.0      0.0  
30 Days of Night     67          0.0      0.0  
300                  600         1.0      0.0  

要从index中删除FilmBody_Count,请使用

df = df.reset_index()

相关问题 更多 >