【问题标题】:PANDAS: How to pd.read_csv and split 7 digits integers into 4 by 3 integers?PANDAS:如何 pd.read_csv 并将 7 位整数拆分为 4 x 3 整数?
【发布时间】:2016-08-07 09:44:53
【问题描述】:

我是 python 和 pandas 的菜鸟,但是我想尽我所能学习,所以我在这里,如果我犯了任何错误,请原谅我。

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

1.我有一个传感器生成的 csv 文件,格式如下:-

  • 原始数据 = 8790203
    • 8790 = 绘图编号(pandas 数据帧标头)
    • 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

我使用 PANDAS 的原因是它速度很快。而且我已经尝试过这段代码来切片数据,但需要很长时间才能完成(由于错误或切片效率低下,我不确定)。

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

谢谢。

【问题讨论】:

    标签: python csv numpy pandas matplotlib


    【解决方案1】:

    使用read_fwf 并将列宽传递给参数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
    

    【讨论】:

    • 您好,谢谢。我看到 read_fwf 和 thot fwf 只是另一种类型的文件扩展名。 nvr thot 我会使用它。谢谢!很快就会试用。
    【解决方案2】:

    为了提高效率,使用高度优化的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 毫秒。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      • 2016-01-01
      • 1970-01-01
      • 2017-06-01
      • 2013-03-21
      • 2012-09-14
      相关资源
      最近更新 更多