当我使用带有直接字符串框架的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相同。
答案 0 :(得分:1)
我认为它是pd.read_csv
中分隔符的问题。默认情况下,sep
为','因此基于,
进行拆分并将其转换为数据框。所以要忽略它使用双空格或不在csv中的任何不同的分隔符。
例如使用
df = pd.read_csv("temp1.csv",names=["Data"],header=None,sep='\s\s+')