【问题标题】:How do I sort through .csv columns with multiple strings (Python)如何对具有多个字符串的 .csv 列进行排序(Python)
【发布时间】:2020-12-25 03:14:21
【问题描述】:

我正在尝试在此.csv list 中找到每种类型的平均评分,但遇到了问题。流派列有多个流派,用逗号分隔(例如,黑暗之夜有 3 种流派动作、犯罪、戏剧)。我编写的代码只有在每一行都有一种类型并且不确定如何扫描具有多种类型的列时才有效。

data = pd.read_csv('movies.csv') # read in file
dataGenre = data
df5 = pd.DataFrame(data={"Genre":dataYearScore['Genre'], "Score": dataYearScore['Score']})

genre_list5 = []
avg_scores5 = []

for genre in df5["Genre"].unique():
    genre_list5.append(genre)
    avg_scores5.append(df5.loc[df5["Genre"]==genre, "Score"].mean())

plt.bar(genre_list5, avg_scores5, width = 0.8)
plt.xlabel('Genre')
plt.ylabel('Score')
plt.xticks(rotation=65)
plt.title('Average Score for Each Genre')
plt.show() 

如果有人能帮忙,我将不胜感激:)

Here is a photo of what the data looks like

Udate:是否可以为每种类型创建一个新列表?那应该会更容易,我只需要弄清楚如何。

【问题讨论】:

    标签: python pandas dataframe matplotlib jupyter-notebook


    【解决方案1】:

    我会这样做:

    from collections import defaultdict
    counter = defaultdict(list)
    
    for idx, row in df5.iterrows():
        genres = row['Genre']
        score = row['Score']
        for genre in genres.split(','):
            counter[genre].append(score)
    

    现在你有了每个流派的分数

    【讨论】:

      【解决方案2】:

      您可以使用拆分和爆炸。

      df = df.assign(Genre=df['Genre'].str.split(',')).explode('Genre').reset_index(drop=True)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-02
        • 2018-10-10
        相关资源
        最近更新 更多