【发布时间】:2023-03-11 23:09:01
【问题描述】:
我有这个数据格式非常奇怪的 csv 文件。月份以 1 和 0 为真或假的列分隔,工作天数为单个字符串,以逗号分隔。
我需要将其更改为正常的日期类型,例如“日/月”,以便我可以进行一些分析。
我尝试使用 pandas 的 melt 方法来分隔列
dfs.melt(id_vars=['ID_INVENTORY','JOBISN','DAYS_JOB'], value_vars=['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DECE'])
之后我得到了这个结果
但由于 pandas 没有拆分方法,我真的不知道该怎么做,但我觉得我走在正确的道路上 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
【问题讨论】:
-
df.DAYS_JOB.str.split(',', expand=True)可能会有所帮助 -
据我了解,您想将一行转换为多行吗?
-
是的,每天把它变成一个新行
-
如果您能提供一个示例来说明您期望输出数据框的外观而不是仅仅描述它,这将有所帮助
-
类似这样的:ID_INVENTORY;ID_CTRLM_JOB;DAY/MONTH 1044;1;01/jan 1044;1;02/jan 1044;1;03/jan 1044;1;04/jan 1044;1 ;05/jan 1044;1;06/jan 1044;1;07/jan 1044;1;08/jan 1044;1;09/jan 1044;1;10/jan 1044;1;11/jan 1044;1; 12/1044;1;13/1044;1;14/1044/1;1;15/1044;1;16/1044;1;17/1044;1;18/1044;1;01 /fev
标签: python pandas csv dataframe datareader