在一项作业中,我收到了一个 CSV 文件,其中包含有关一堆电影的各种数据。 CSV 的其中一列标题为“类型”,表面上给出了电影的类型,我们还给出了电影的总收入。在流派列中,许多电影都附加了多种流派,例如“ Action ”、“喜剧”、“戏剧”等,当超过多个流派时,每个流派用字符 |
分隔。与电影相关的一种类型。我被要求绘制一个条形图,按类型显示每部电影的总收入,其中水平(或 x 轴)是类型,垂直(或 y 轴)是每种类型所带来的美元金额英寸。
到目前为止,我已经成功地使用 pandas 提取了流派和总列
#DataFrame is denoted by variable name movie_data
genre_and_gross = movie_data[['gross','genres']]
我陷入困境的是,我不能简单地使用 pd.dF.groupBy.sum()
因为在某些情况下,每个单元格有多个流派,这不会给我我需要的数据。有没有办法利用 split() 函数,如果一个单元的总收入为 100 万美元,并且被赋予 Action 和喜剧类型,我将能够添加 100 万美元当我制作条形图时,流派和喜剧的值(value)观如何?
作为引用,这是 CSV 文件行的示例:
Color,James Cameron,723,178,0,855,Joel David Moore,1000,760505847,Action|Adventure|Fantasy|Sci-Fi,CCH Pounder,Avatar ,886204,4834,Wes Studi,0,avatar|future|marine|native|paraplegic,http://www.imdb.com/title/tt0499549/?ref_=fn_tt_tt_1,3054,English,USA,PG-13,237000000,2009,936,7.9,1.78,33000
最佳答案
鉴于您说这是一项作业,这里有一种可以使用类似数据集来实现的方法,一旦您了解,您应该能够将其应用到您自己的数据集。
您完全正确地假设可以利用拆分来实现结果。
movie = [['StackOverflow', ['1,000,000', 'Action|Comedy|Drama']]]
result = []
for item in movie:
value = []
genres = item[1][1].split('|')
for v in genres:
value.append((v, item[1][0]))
result.append([item[0], value])
print(result)
#[[MovieName, [(Genre, Gross)]], [MovieName, [(Genre, Gross)]]]
>>>[['StackOverflow', [('Action', '1,000,000'), ('Comedy', '1,000,000'), ('Drama', '1,000,000')]]]
关于python - 如何使用 pandas 或其他方式在 python 中拆分 CSV 文件中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59186298/