按指定字符分行——MySQL与Python实现

SQL

  • 原来的表结构
/*创建表*/
create table stand
with cte_stand as (
select 'ph值' FFactor,
       '水提法,盐提法' FMethods,
       '6.5~7.5' FRange
union
select 'ph值' FFactor,
       '试纸法' FMethods,
       '6.0~8.0' FRange
union
select '有机质' FFactor,
       '消毒法,速测法' FMethods,
       '3.0~5.0' FRange)
select * from cte_stand;
/*查看*/
select * from stand;
  • 查询语句及结果
SELECT t.FFactor, 
       substring_index(substring_index(t.FMethods,',', b.help_topic_id + 1), ',', -1) method
FROM stand t inner join mysql.help_topic b 
ON b.help_topic_id <  (LENGTH(t.FMethods) - LENGTH(REPLACE(t.FMethods, ',', '')) + 1);
sql_str.png

注释:mysql.help_topic为MySQL自带的表,其中的help_topic_id字段用来产生自增id

Python实现

  • 与上面的同等实现
import pandas as pd
import numpy as np

df = pd.DataFrame([
        ['ph值', '水提法,盐提法', '6.5~7.5'],
        ['ph值', '试纸法', '6.0~8.0'],
        ['有机质', '消毒法,速测法', '3.0~5.0'],
    ], columns=['FFactor', 'FMethods', 'FRange'])
a = pd.DataFrame({
    'FFactor': df['FFactor'].repeat(df['FMethods'].str.count(',')+1),
    'FMethods': np.concatenate(df['FMethods'].str.split(','))
    })
print(a)
python_str.png
  • 当要切分的列不是str,而是list
import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [1, 2], 'b': [[1, 2], [4, 5, 5]]})

a = pd.DataFrame({
    'a': df['a'].repeat(df['b'].str.len()),
    'b': np.concatenate(df['b'].values)
    })

print(df)
print(a)
python_list.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,162评论 0 19
  • 语 句 功 能 数据操作 SELECT——从数据库表中检索数据行和列INSERT——向数据库表添加新数据行DELE...
    戰敭阅读 5,255评论 0 53
  • 一、SQL速成 结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件...
    shadow雨轩阅读 594评论 0 3
  • 数据库分类 关系型数据库库:Relational Database Management System (RDBM...
    Stay_Hungry_Fly阅读 678评论 0 0
  • 14天投资理财的学习时间一晃就结束了,想想这14天在小伙伴们的陪伴下既充实又紧张学习过程,让我不由的想起学生时代的...
    独行侠雨后彩阅读 294评论 0 0

友情链接更多精彩内容