如何将字符列表转换为SQL列?逗号分隔星期字符串转多列问询
实现方法
方法一:Python pandas 处理
先把原始数据构建成DataFrame:
import pandas as pd df = pd.DataFrame({ 'A': [13, 15, 17], 'B': ['yes', 'no', 'yes'], 'C': ['Mon, Thu, Sun', 'Thu, Tue, Fri', 'Sat, Mon, Wen'] })
执行以下步骤转换格式:
- 拆分C列字符串并去除空格,转为列表格式
- 对列表做独热编码,生成日期对应的0/1列
- 调整列顺序为指定的
Sun, Mon, Tue, Wen, Thu, Fri, Sat - 合并处理后的日期列与原表的A、B列,删除原C列
对应代码:
# 拆分C列并清理空格 df['C'] = df['C'].str.split(', ').tolist() # 生成独热编码列 dummies = df['C'].str.join('|').str.get_dummies() # 按目标顺序调整列 target_cols = ['Sun', 'Mon', 'Tue', 'Wen', 'Thu', 'Fri', 'Sat'] dummies = dummies[target_cols] # 合并数据得到结果 result = pd.concat([df[['A', 'B']], dummies], axis=1) print(result)
运行后输出结果:
A B Sun Mon Tue Wen Thu Fri Sat 0 13 yes 1 1 0 0 1 0 0 1 15 no 0 0 1 0 1 1 0 2 17 yes 0 1 0 1 0 0 1
方法二:Excel 公式处理
以生成Sun列为例,在D1单元格输入公式:=IF(ISNUMBER(SEARCH("Sun",$C1)),1,0)
按回车后,将公式横向复制到其他日期列,再纵向复制到所有行,最后隐藏或删除原C列即可得到目标格式。
内容的提问来源于stack exchange,提问作者Jānis
相关产品推荐
相关产品推荐

