亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將熊貓數據框列拆分為多個并遍歷它

將熊貓數據框列拆分為多個并遍歷它

蕭十郎 2022-12-27 15:22:14
我正在嘗試采用具有匹配 ID 的藝術家,使音樂跨越各種單一到流派的組合。這就是我想要做的Artist | Id | Genre                | Jazz | Blues | Rock | Trap | Rap | Hip-Hop | Pop | Rb  |----------------------------------------------------------------------------------------------------Bob    | 1  | [Jazz, Blues]        |   1  |   1   |   0  |   0  |   0 |   0     |  0  |   0----------------------------------------------------------------------------------------------------Fred   | 2  | [Rock,Jazz]          |   1  |   0   |   1  |   0  |   0 |   0     | 0   |   0----------------------------------------------------------------------------------------------------Jeff   | 3  | [Trap, Rap, Hip-Hop] |   0  |   0   |   0  |   1  |   1 |   1     | 0   |   0----------------------------------------------------------------------------------------------------Amy    | 4  | [Pop, Rock, Jazz]    |   1  |   0   |   1  |   0  |   0 |   0     | 1   |   0----------------------------------------------------------------------------------------------------Mary   | 5  | [Hip-Hop, Jazz, Rb]  |   1  |   0   |   0  |   0  |   0 |   1     | 0   |   1----------------------------------------------------------------------------------------------------這是我得到的錯誤---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-50-7a4ed81e14d7> in <module>     11 for index, row in artist_df.iterrows():     12     x.append(index)---> 13     for i in row['genre']:     14         artists_with_genres.at[index, genre] = 1     15 TypeError: 'float' object is not iterable這些(藝術家)流派是我將在結合其他因素(如年份、歌曲或人口統計數據)時用來幫助確定相似藝術家的屬性。我正在創建和迭代的新專欄將指定藝術家是否屬于某個流派。用 1/0 來簡單地表示藝術家是否是搖滾/嘻哈/陷阱等。使用屬性的二進制表示。這是當前的數據框獲取我的數據框并將流派拆分為單獨的類型,以便我可以轉換為 1/0 二進制表示。我需要將流派設置為索引嗎?
查看完整描述

1 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

嘗試使用get_dummies:


df['Genre'] = df['Genre'].str.split('|')

dfx = pd.get_dummies(pd.DataFrame(df['Genre'].tolist()).stack()).sum(level=0)

df = pd.concat([df, dfx], axis=1).drop(columns=['Genre'])

print(df)


  Artist  Id  Blues  Hip-Hop  Jazz  Pop  Rap  Rb  Rock  Trap

0    Bob   1      1        0     1    0    0   0     0     0

1   Fred   2      0        0     1    0    0   0     1     0

2   Jeff   3      0        1     0    0    1   0     0     1

3    Amy   4      0        0     1    1    0   0     1     0

4   Mary   5      0        1     1    0    0   1     0     0

詳細解釋看這里 -> Pandas column of lists to separate columns


查看完整回答
反對 回復 2022-12-27
  • 1 回答
  • 0 關注
  • 81 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號