Pandas 如何读取CSV、分隔符、分隔符错误
第一个我是类型:Pandas 如何读取CSV、分隔符、分隔符错误,pandas,csv,delimiter-separated-values,Pandas,Csv,Delimiter Separated Values,第一个我是类型: import pandas as pd df=pd.read_csv("oktober.csv", header = None, skiprows=2, engine='python') df 比pd更大的是带有分隔符的表“;” 0 模式改变:;24.10.2019 12:18:47;目标: 一, 图案编号:1;B3377;说明:;;合金 二, 净重:;0;毛重:;180 三, 烧瓶号。;模制的;国家;倾倒;国家;清空;T 四, 18222;04.11.2019 09:29:
import pandas as pd
df=pd.read_csv("oktober.csv", header = None, skiprows=2, engine='python')
df
比pd更大的是带有分隔符的表“;”强>
0
模式改变:;24.10.2019 12:18:47;目标:
一,
图案编号:1;B3377;说明:;;合金
二,
净重:;0;毛重:;180
三,
烧瓶号。;模制的;国家;倾倒;国家;清空;T
四,
18222;04.11.2019 09:29:20;0;;0;08.11.2019 15:3...
4909
22319;26.11.2019 10:04:09;0;;0;;450;646;0;0;;
4910
22320;26.11.2019 10:04:54;0;;0;;450;449;0;0;;
4911
; ; ;闵;450;584; ; ; ; ;
4912
; ; ;马克斯;450;3781; ; ; ; ;
4913
; ; ;平均值;450;1443; ; ; ; ;
220
18395;08.11.2019 15:34:46;0;2019年11月8日16:12:4
221
18396;08.11.2019 15:35:37;0;2019年11月8日16:13:0
222
18397;08.11.2019 15:36:25;0;2019年11月8日16:13:3
223
; ; ;闵;450;461; ; ; ; ;
224
; ; ;马克斯;450;8223; ; ; ; ;
225
; ; ;平均值;450;1185; ; ; ; ;
226
模式改变:;08.11.2019 15:37:15;目标:
227
图案编号:1;B2238;说明:;;合金
228
净重:;0;毛重:
229
烧瓶号。;模制的;国家;倾倒;国家;清空;T
230
18398;08.11.2019 15:38:35;0;2019年11月8日16:14:3
当我尝试使用分隔符和定界符时,我得到了一个错误:第227行应该有7个字段,而第11行应该有7个字段
import pandas as pd
df=pd.read_csv("oktober.csv", header = None, skiprows=2, engine='python',sep=';' )
df
如何解决这个问题?显然,您的输入数据有些混乱,至少如果 每行中分号的数量与此有关 众所周知,read_csv无法很好地处理此类情况,因此采取两个步骤 方法:
df2 = df.src.apply(lambda txt: pd.Series(txt.split(';'))).replace(np.nan, '')
0 1 2 3 4 5 6
0 0 Pattern changed : 24.10.2019 12:18:47 Target :
1 1 Pattern number : 1 B3377 Description : Alloy
2 2 Weight net: 0 Weight gross: 180
3 3 Flask no. moulded State poured State Emptied T
4 4 18222 04.11.2019 09:29:20 0 0 08.11.2019 15:3
也许这个结果将成为整理源文件的源材料,
e、 g.识别无序的行,添加缺少的分号,然后重新阅读
(你的选择)
还可以考虑将列名设置为一组有意义的字符串。要进行调试,最好查看第227行的确切内容。因为在那里它看到的列比需要的多,所以我添加了更多的列。faile的名称是src,这是我将要读取的文件的名称?文件必须是txt?文件名是什么?也许我必须在开始时键入一些特殊的imort作为txt或类似的东西?也许是那些愚蠢的问题,但我是新来的:)谢谢。最初我将pd.read_csv的第一个参数写成io.StringIO(txt),因为实际上我是从字符串变量(txt)读取的。但在“现实世界”中,您应该从文件中读取,所以现在我将input.csv放在那里。我任意假定的列名称(src)(任何名称都可以)。
0 1 2 3 4 5 6
0 0 Pattern changed : 24.10.2019 12:18:47 Target :
1 1 Pattern number : 1 B3377 Description : Alloy
2 2 Weight net: 0 Weight gross: 180
3 3 Flask no. moulded State poured State Emptied T
4 4 18222 04.11.2019 09:29:20 0 0 08.11.2019 15:3