2016-11-18 63 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