2016-04-15 31 views
1

我是Python和熊猫的小菜鸟,但是我想尽我所能学习,所以在这里,如果我犯了错误,请原谅我。PANDAS:如何将pd.read_csv和7位整数分成4乘3整数?

我需要帮助。我的目标是在25414长列表中绘制包含多个绘图数据的csv数据。为了做到这一点,我需要从csv文件中识别哪个绘图编号和哪些数据(绘图数据)转到绘图编号(即标题)。之后,我将使用Matplotlib和Numpy将所有图形共享与图片中所示的相同轴。 Plot image sample

1.I具有从传感器产生的CSV文件和格式是这样的: -

  • 原始数据= 8790203
    • 8790 =剧情数(熊猫数据帧报头)
    • 203 =数据用于绘图(绘图数据)

而csv中的数据跨度长达25414。 Click here to download csv raw data.....

目标列表结果:

[Plot Number] [Plot Data] 
8790    203 
8790    205 
8790    210 
8791    060 
8791    065 
8791    090 

我用大熊猫是因为它是快速的原因。我已经试过这段代码来分割数据,但需要永久完成(由于错误或由于低效切片,我不确定)。

for x in range(0,len(factor),+1): 
y = factor.iloc[x] 
PlotNum = y[:4] 
PlotData = y[5:] 

谢谢。

回答

2

使用read_fwf并通过柱宽度以PARAM widths,设置header=None并传递所需的列名的列表:

In [234]: 
df = pd.read_fwf(r'c:\data\trace_ff_ID(360).trc', widths=[4,3], header=None, names=['Plot Number', 'Plot Data']) 
df.head() 

Out[234]: 
    Plot Number Plot Data 
0   8790  203 
1   8790  204 
2   8790  205 
3   8790  206 
4   8790  207 
+0

嗨,谢谢。我看到了read_fwf,并且fwf只是另一种类型的文件扩展名。 nvr我会使用它。谢谢!将尽快尝试。 – Syah

0

出于效率使用read_csv其被高度优化,然后使用算术 分割数和数据:

In [10]: df=pd.read_csv('trace_ff_ID(360).csv',header=None) 

In [11]: df2=pd.DataFrame({'Plot Number':df[0]//1000,'Plot Data':df[0]%1000}) 

整个过程需要100毫秒。

+0

感谢您的快速回复。看起来不错!将尽快试用... – Syah