Ответы пользователя по тегу Pandas
  • Как правильно в pandas разбирать CSV файл, содержащий много наборов данных формата TimeStamp0; Value0; Timestamp1;Value1;?

    @skozlovf
    Можно просто разделить таблицу на несколько независимых датафреймов. Читать CSV несколько раз нет необходимости.

    Например, так:

    import pandas as pd
    import numpy as np
    
    
    def get_df(filename, parse_dates=None):
        """Build :class:`DataFrame` list from CSV file.
    
        Expected CSV file format::
    
            Timestamp0; Value0 ; Timestamp1; Value1; ...TimestampN; ValueN;
    
        Args:
            filename: CSV filename.
            parse_dates: List of columns with dates.
    
        Returns:
            List of DataFrames with 'Timestamp' as index and 'Value' as value
            column.
    
        Notes:
            :attr:`DataFrame._name` contains name extracted
            from 'TimestampX' column.
        """
    
        df_all = pd.read_csv(filename, sep=';', decimal=',',
                             parse_dates=parse_dates, header=0)
    
        assert len(df_all.columns) % 2 == 0
    
        lst = []
        columns = ['time', 'value']
    
        # Create lsit of 2-items chunks.
        col_list = np.split(df_all.columns, len(df_all.columns) / 2)
    
        for cols in col_list:
            df = df_all[cols]                   # split 2-column DataFrame.
            df._name = cols[0].split(',')[0]    # attach name to data frame.
            df.columns = columns                # change columns names.
            df = df.set_index('time')           # set index to timestamps.
            lst.append(df)
    
        return lst
    
    
    df_list = get_df('GAS.csv', parse_dates=[0, 2, 4])
    df = df_list[0]
    print(df.index)
    print(df._name)
    
    ...
    Ответ написан