Pandas表格数据实现一行变多行

目标:

解决实际问题:一个字段包含多个值,怎样将这个值拆分成多行,然后实现统计
比如:一个电影有多个分类、一个人有多个喜好,需要按分类、喜好做统计

数据准备
import pandas as pd
df = pd.read_csv(
    "/Users/allin1678/PycharmProjects/untitled/this/ant-learn-pandas/datas/movielens-1m/movies.dat",
    header=None,
    names="MovieID::Title::Genres".split("::"),
    sep="::",
    engine="python"
)
print(df.head())
image.png

问题:怎样实现这样的统计,每个题材有多少部电影?

解决思路:

一、将Genres按照分隔符|拆分成列表

查看df的信息

a = df.info()
print(a)
image.png

查看df中Genres列的值和类型

b = df.iloc[0]["Genres"]
print(b,type(b))
image.png

新增一列

df["Genre"] = df["Genres"].map(lambda x:x.split("|"))
print(df.head())
image.png

查看新增列的类型

print(df["Genre"][0],type(df["Genre"][0]))
image.png
二、按Genres拆分成多行

语法:pandas.DataFrame.explode(column)
将dataframe的一个list-like的元素按行复制,index索引随之复制

df_new = df.explode("Genre")
print(df_new)
image.png
三、统计每个Genres下的电影数目
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容