文章目录
explode函数使用
现有一个csv文件记录课程,数据格式如下图:
现要把每星期的课程拆出来,形成每个课程单独一行的格式(类似一维表)
星期 | 课程 |
---|---|
周一 | 历史 |
周一 | 生物 |
… | … |
实现代码
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 15 21:04:26 2022
利用pandas进行炸裂
@author: zlt
"""
import pandas as pd
if __name__ == "__main__":
df_file = pd.read_csv("D:\Codecode\excelFile\practice\每周课程0415.csv", encoding="utf-8")
# 把课程以空格分割后,存入lessons列
# series类型转为str类型处理
df_file["lessons"] = df_file["课程"].str.split(" ")
# 根据lessons炸裂
df_file = df_file.explode("lessons")
print(df_file)
# 结果写入新的文件中
df_file.to_csv("D:\Codecode\excelFile\practice\每周课程0415结果.csv", encoding="utf-8", mode="w", index=False)
print("finish")
输出的文件结果:
反炸裂
使用上述结果,作为基础数据,进行“反炸裂”。
# 读取结果文件
df_file = pd.read_csv("D:\Codecode\excelFile\practice\每周课程0415结果.csv",encoding="utf-8")
# 只用到“星期”和“lesson”两列数据
df_file_t = df_file[["星期","lessons"]]
print(df_file_t)
# 处理
df_res=df_file_t.groupby("星期").agg(','.join)
print(df_res)
df_res2 = df_res["lessons"].str.split(',',expand=True)
print("df_res2:\n ",df_res2)
# 结果写入新的文件中
df_res2.to_csv("D:\Codecode\excelFile\practice\每周课程0415结果-新1.csv", encoding="utf-8", mode="w", index=True)
最终结果
有兴趣可看SQL实现 Hive SQL:实现炸列(列转行)以及逆操作(行转列)