【发布时间】:2021-09-29 21:51:30
【问题描述】:
我是一个相当新的 python/pandas 用户,我的任务是清理大约 5,000 行 csv 记录,然后将记录迁移到 sql 数据库中。
内容是个人的个人信息(这使我无法将其发布以供参考)和他们的“座位”职业信息,但文件一直......管理不善......多年来,最终看起来像这个:
#Sect1 Sect2 Sect3 Seat#
L/L/L/L 320/320/319/321 D/C/D/C 1-2/1-2/1-2/1-2
V 602 - 1-6
T 101 F 1&3
R 158 - 3* 4
U 818 4 Ds9R
该人的个人信息在左侧未显示的四列中。
实际上,即使只是上面选择的第一行,实际上也应该是:
#Sect1 Sect2 Sect3 Seat#
L 320 D 1
L 320 D 2
L 320 C 1
L 320 C 2
L 319 D 1
L 319 D 2
L 321 C 1
L 321 C 2
带有“-”的意思是“通过”而不是“和”。 (例如,在我的原始示例中,第二行是座位号 1 到座位号 6,而不是座位号 1 和 6。
我还应该注意,这些人没有唯一的 ID/索引,它完全基于名字/姓氏。
我一直在尝试打破其中的一些,但在
方面取得了有限的成功df1 = df1.drop('Sect2', axis=1).join(df1['Sect2'].str.split('/', expand=True).stack().reset_index(level=1, drop=True).rename('Sect2'))
但这最终会创建错误的记录,例如
#Sect1 Sect2 Sect3 Seat#
L 319 C 1
最后,我的问题是;是否可以使用脚本来清理这些数据?我很快就没有想法了,真的不想手动执行此操作,但我也不想再浪费时间尝试编写脚本,如果这是一个毫无意义的尝试。
【问题讨论】:
-
座椅部分似乎没有遵循任何模式,还是有?
-
没有模式,没有。每个部分有 4 到 16 个席位,命名约定也因部分而异。
-
@Wonky 您能否让我的答案中提供的代码为您工作?
-
@Ghoti 对您的努力的缓慢认可表示歉意。您的脚本解决了所描述的问题。谢谢!
标签: python pandas database-migration data-cleaning