【问题标题】:read_csv, use delimeter in part of the dataread_csv,在部分数据中使用分隔符
【发布时间】:2018-12-04 20:43:08
【问题描述】:

我有一个 csv 文件,其中包含 (YY,MM,DD,hh.mm,ss) 形式的数据,然后是测量值。问题是所有都用','分隔。当我使用

pd.read_csv(path_new_data, sep=',')

我将所有列分开,如下所示。

    18  1   8   15  17  5   97.216
0   18  1   8   15  22  7   98.039
1   18  1   8   15  27  8   97.587
2   18  1   8   15  32  9   97.535
3   18  1   8   15  37  11  97.637

我想要的是将前 6 列合并为一个,甚至更好地在最后一列上指定分隔符,并得到类似以下的内容

    181815175   97.216
0   181815227   98.039
1   181815278   97.587
2   181815329   97.535
3   1818153711  97.637

有什么想法吗?

【问题讨论】:

    标签: pandas csv merge


    【解决方案1】:

    我觉得没必要,只定义列名并使用to_datetime

    从 DataFrame 的多列中组装日期时间。键可以是常见的缩写,如 ['year', 'month', 'day', 'minute', 'second', 'ms', 'us', 'ns']) 或相同的复数形式。

    temp=u"""18,1,8,15,17,5,97.216
    18,1,8,15,22,7,98.039
    18,1,8,15,27,8,97.587
    18,1,8,15,32,9,97.535
    18,1,8,15,37,11,97.637"""
    #after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
    names = ['year','month','day','hour','minute','second','data']
    df = pd.read_csv(pd.compat.StringIO(temp), names=names)
    print (df)
       year  month  day  hour  minute  second    data
    0    18      1    8    15      17       5  97.216
    1    18      1    8    15      22       7  98.039
    2    18      1    8    15      27       8  97.587
    3    18      1    8    15      32       9  97.535
    4    18      1    8    15      37      11  97.637
    
    #add 20 for correct parsing
    df['year'] = '20' + df['year'].astype(str)
    cols = ['year','month','day','hour','minute','second']
    df['date'] = pd.to_datetime(df[cols])
    df = df.drop(cols, axis=1)
    print (df)
         data                date
    0  97.216 2018-01-08 15:17:05
    1  98.039 2018-01-08 15:22:07
    2  97.587 2018-01-08 15:27:08
    3  97.535 2018-01-08 15:32:09
    4  97.637 2018-01-08 15:37:11
    

    【讨论】:

    • 谢谢,效果很好!只是为了将来使用你知道我是否可以通过 read_csv() 在部分数据中应用分隔符还是我必须单独处理每一行?
    • @saias - 不幸的是问题,关闭是使用read_fwf,然后用空字符串替换空格。
    猜你喜欢
    • 2017-10-25
    • 2020-12-30
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    相关资源
    最近更新 更多