Python str.split为direct和read_csv提供不同的结果

Python str.split为direct和read_csv提供不同的结果,python,python-2.7,pandas,Python,Python 2.7,Pandas,有没有专家能告诉我,为什么我使用str.split和直接字符串框架以及使用pandas从.csv文件读取的相同字符串时会得到不同的结果 data="0 2017/09/28 19:04:05.897106 72.9605 87 ECU1 AMFM HADT 991 log info verbose 1 991 :: 745 :: T[4]HSU(267) fq 98600, fs -12, hwQ 92, pQ 0, afQ 0, mp 65, ofs -300, adj 123, bw

有没有专家能告诉我,为什么我使用str.split和直接字符串框架以及使用pandas从.csv文件读取的相同字符串时会得到不同的结果

    data="0 2017/09/28 19:04:05.897106 72.9605 87 ECU1 AMFM HADT 991 log info verbose 1 991 :: 745 :: T[4]HSU(267) fq 98600, fs -12, hwQ 92, pQ 0, afQ 0, mp 65, ofs -300, adj 123, bw 114, stp 0, hl 5EECB57"
df = pd.DataFrame([data],columns=["Data"])
print df.Data.str.split(' ',13).tolist()
df = pd.read_csv("temp1.csv",names=["Data"],header=None)
print df.head(1)["Data"].str.split(' ', 13).tolist()
temp1.csv仅包含一行,即与数据相同

产出:

对于打印1:

[['0', '2017/09/28', '19:04:05.897106', '72.9605', '87', 'ECU1', 'AMFM', 'HADT', '991', 'log', 'info', 'verbose', '1', '991 :: 745 :: T[4]HSU(267) fq 98600, fs -12, hwQ 92, pQ 0, afQ 0, mp 65, ofs -300, adj 123, bw 114, stp 0, hl 5EECB57']] [['', 'hl', '5EECB57']] [0',2017/09/28',19:04:05.897106',72.9605',87',ECU1',AMFM',HADT',991',log',info',verbose',1',991::745::T[4]HSU(267)fq 98600,fs-12,hwQ 92,pQ 0,afQ 0,mp 65,ofs-300,adj 123,bw 114,stp 0,hl 5EECB57'] 对于打印2:

[['0', '2017/09/28', '19:04:05.897106', '72.9605', '87', 'ECU1', 'AMFM', 'HADT', '991', 'log', 'info', 'verbose', '1', '991 :: 745 :: T[4]HSU(267) fq 98600, fs -12, hwQ 92, pQ 0, afQ 0, mp 65, ofs -300, adj 123, bw 114, stp 0, hl 5EECB57']] [['', 'hl', '5EECB57']] [hl',5EECB57']
我希望输出与打印1相同。

我认为这是pd.read\u csv中分隔符的问题。默认情况下,
sep
是',因此它基于
进行拆分,并将其转换为数据帧。所以要忽略这一点,请使用双空格或csv中没有的任何不同分隔符

例如使用

df = pd.read_csv("temp1.csv",names=["Data"],header=None,sep='\s\s+') 

你能在
df=pd.read\u csv(…
+1)之后添加
df.head(5)
吗?谢谢你的修改。df=pd.read\u csv(“temp1.csv”,name=[“Data”],header=None,sep='\s\s',engine='python')。但我仍然想知道为什么单个空格“\s”的命令会出错。这是因为csv中最常用的是单个空格,pandas会尝试基于此创建新列。由于您只放置了一列,因此会导致错误。@Bharath我当然会投票,但我还没有投票权。与此同时,我正在努力获得above logic可用于以下数据行。'data=“13161 2017/09/28 19:04:49.799473 0.0000 1 AOXM 0控制请求非详细0[set_default_log_level]04 00 00.”AOXM后三个空格。失败时出现raise VALUERROR(msg)ValueError:第1行应为1个字段,锯2–23分钟前Biswal不需要空格任何缺少的sep模式都可以,如
sep='$xI*S'
sep='non-ocurning pattern'
,因为您需要整个字符串。谢谢。使用df=pd解决。read\u csv(tmp\u csv\u outfile,name=[“Data”],header=None,sep='\S+$,engine='python'))