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

时间:2017-10-10 12:12:11

标签: 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 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']]

用于打印2:

[['', 'hl', '5EECB57']]

我希望输出与打印1相同。

1 个答案:

答案 0 :(得分:1)

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

例如使用

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