python - Python中的拆分和连接值
问题描述
我有这个数据格式非常奇怪的 csv 文件。月份以 1 和 0 为真或假的列分隔,工作天数在由逗号分隔的单个字符串中。
我需要将其更改为正常的日期类型,例如“日/月”,以便我可以进行一些分析。
我尝试使用带有融化方法的熊猫来分隔列
dfs.melt(id_vars=['ID_INVENTORY','JOBISN','DAYS_JOB'], value_vars=['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DECE'])
之后我得到了这个结果
但是由于熊猫没有拆分方法,我真的不知道该怎么做,但我觉得我走在正确的道路上 xD
下面的示例数据(用“;”分隔)
JAN;FEB;MAR;APR;MAY;JUN;JUL;AUG;SEP;OCT;NOV;DECE;DAYS_JOB
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1;1;1;1;1;1;1;1;1;1;1;1;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
解决方案
我假设 'DAYS_JOB' 列中的 1,2,3,4.... 是字符串格式。
在这种情况下,我们可以先用逗号分割字符串,转换为列表,然后使用pandas的explode函数将列表项展开为多条记录。[ df.explode 文档]
代码将如下所示:
df['DAYS_JOB'] = df['DAYS_JOB'].apply(lambda x: list(x.split(",")))
df = df.explode('DAYS_JOB')
推荐阅读
- kubernetes - Hangfire:初始化对象的问题
- database - TYPO3 数据库导入
- wix - Blazor 服务器-客户端安装程序 WIX 最佳实践?
- python - 如何在 Python 3.10 的 Match(切换其他语言)案例中使用多个案例
- c# - 如果多个语句中的任何其他语句失败,我如何反转查询影响?
- node.js - Cloud Function 运行缓慢并超出可用内存
- python - 有没有办法在 AuzureML Studio 中从表格模型或 PowerBi 数据集创建数据集?
- postgresql - 在 postgres DB 中使用 hibernate 和 spring 数据 JPA 批量插入
- stored-procedures - 如何使用 Azure 数据工厂管道创建存储过程?
- database - 将 KDB 数据导入 DolphinDB 是否有更有效的解决方案?