2016-11-18 61 views
0

我有一個CSV文件,它在同一張紙上有兩組數據。我做了我的研究,最接近我能找到的是我所附的。我遇到的問題是它們都不是表格,它們是單獨的數據集合;兩者都由多行分隔。我想將每個數據集保存爲單獨的CSV。這在Python中可能嗎?請提供您的善意幫助。CSV文件中的兩組數據

Python CSV module: How can I account for multiple tables within the same file?

第一組:

​​

第二組:

DriveBy    15 
BillBoard    45 
Social Media   85 

我的源是我轉換成一個CSV文件中的Excel文件。

import pandas as pd 
data_xls = pd.read_excel('T:\DataDump\Matthews\REPORT 11.13.16.xlsm', 'InfoCenterTracker', index_col=None) 
data_xls.to_csv('your_csv.csv', encoding='utf-8') 

second_set = pd.read_csv('your_csv.csv',skiprows=[10,11,12,13,14,15,16,17,18,19,20,21,22,23,23]) 
+0

是該數據總是在一樣的地方?如果是,請使用@kilojules的答案。如果不是,有什麼方法可以輕鬆檢測第二組何時開始?例如兩個空白行。 – Batman

+0

您可以將您的源代碼添加到問題中,以便我們看到您所做的工作? – ecounysis

+0

我已更新我的原始帖子以反映我的代碼。即使在我編輯我的Python腳本後,它仍然以與我第一次轉換爲CSV時的格式相同的格式顯示。 –

回答

1

使用skiprows在大熊貓read_csv

$ cat d.dat 
Presented_By:  Source:    City: 
Chris    Realtor    Knoxville 
John     Engineer   Lantana 
Wade     Doctor    Birmingham 
DriveBy    15 
BillBoard    45 
Social Media   85 

In [1]: import pandas as pd 
In [2]: pd.read_csv('d.dat',skiprows=[0,1,2,3]) 
Out[2]: 
    DriveBy    15 
0 BillBoard    45 
1 Social Media   85 

In [3]: pd.read_csv('d.dat',skiprows=[4,5,6]) 
Out[3]: 
     Presented_By:  Source:    City: 
0 Chris    Realtor    Knoxv... 
1 John     Engineer   Lantana 
2 Wade     Doctor    Birmi... 

您可以檢測通過搜索時,CSV有2項跳過哪些行不是3

In [25]: for n, line in enumerate(open('d.dat','r').readlines()): 
    ...:  if len(line.split()) !=3: 
    ...:  breakpoint = n 
    ...:  
In [26]: pd.read_csv('d.dat',skiprows=range(breakpoint-1)) 
Out[26]: 
    DriveBy    15 
0 BillBoard    45 
1 Social Media   85 

In [27]: pd.read_csv('d.dat',skiprows=range(breakpoint-1, n+1)) 
Out[27]: 
     Presented_By:  Source:    City: 
0 Chris    Realtor    Knoxv... 
1 John     Engineer   Lantana 
2 Wade     Doctor    Birmi... 
+0

感謝Kilojoules,第一組從開始處開始,因此不需要跳過那裏的任何行,但第二組恰好在14行之後設置。 –

+0

@Pythoner我更新了我的答案,以找到文件格式更改的地方 – kilojoules