目标:
解决实际问题:一个字段包含多个值,怎样将这个值拆分成多行,然后实现统计
比如:一个电影有多个分类、一个人有多个喜好,需要按分类、喜好做统计
数据准备
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