Панды игнорируют / удаляют строки между строками в CSV-файле, но Dropna Dosen ', кажется, работает - PullRequest
0 голосов
/ 08 июня 2018

С помощью Джареда и собственных исследований я нашел следующее решение:

df = pd.read_csv(DATAFILE_INPUT, sep='\t', skiprows=8, error_bad_lines=False, warn_bad_lines=False, decimal=',')
df.columns =['Zeit', 'Zyklus', 'Weg','Kraft', 'Dehnung', 'Temperatur', 'Temp. oben','Temp. mitte', 'Temp. untens']

df = df[df.Zeit.str.contains('Zeit') == False]
df.columns = ['s','segments','mm','kN','%','°C','°C','°C','°C']
df = df[df.s.str.contains('s') == False]

Спасибо всем за помощь.

Я пытаюсь использовать пандсоздать новый CSV-файл, но файл raw.date имеет в каждой x строках 4 строки.

python 2.7

Мой код:

DATAFILE_INPUT = 'test.dat 'DATAFILE_OUTPUT_1 =' test.out '

    in_columns = ['a', 'b', 'c','d']
# read in data (skip some rows / column separator is a tab / no header use our names / decimal separator is a comma)
    df = pd.read_csv(DATAFILE_INPUT, skiprows=1, sep='\t', header=None, names=in_columns, decimal=',')

    out_columns = ['a','b', 'c', 'd']

    df.index += 1

    # save data (filename / print row numbers / tab separator / only print defined columns / decimal separator)
    df.to_csv(path_or_buf=DATAFILE_OUTPUT_1, index=True, sep='\t', columns=out_columns, decimal='.')

вот пакеты, которые я использую:

 import pandas as pd

лучший пример:

  In: index a b c d
     0   1,3 1,4  1,32 1,4325 
      1  2,234 2,123 3,123 1,123
     2
    4       name 
    5      guido 
     6     mother 
     7    2,123 2,123123 4,123123 5,123123
     8   1,123123 2,123123 3,123123 4,123123 
     9  1,123123 2,123123 3,123123 4,123123
    10
    11       name 
    12      guido 
     13     mother 
      15    1,2134234 3,34324 3,234234 5,234234

и эточто я хочу в качестве вывода:

Out: index a b c d
         0   1.3 1.4  1.32 1.4325 
          1  2.234 2.123 3.123 1.123
         2    2.123 2.123123 4.123123 5.123123
         3   1.123123 2.123123 3.123123 4.123123 
         4  1.123123 2.123123 3.123123 4.123123
          5    1.2134234 3.34324 3.234234 5.234234

и так, что мне нужно сделать, удалить, стереть, игнорировать эти 4 строки

вот ссылка на мой образец данных ипервый результат.https://www.dropbox.com/s/syocsw1l3fyju3q/RF_P92_500_180_023_1.dat?dl=0 https://www.dropbox.com/s/or93sk6vxb9z836/test.out?dl=0] 2

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете установить error_bad_lines на False и warn_bad_lines на False (если вы этого не сделаете, он выведет все плохие строки, чтобы предупредить вас).

error_bad_lines: boolean, по умолчанию True

Строки со слишком большим количеством полей (например, строка csv со слишком большим количеством запятых) по умолчанию вызовут исключение, и DataFrame не будет возвращен.Если значение False, то эти «плохие строки» будут удалены из возвращаемого фрейма данных.

import pandas as pd

df = pd.read_csv('./RF_P92_500_180_023_1.dat', sep='\t', skiprows=9,
                 encoding='latin-1', error_bad_lines=False, warn_bad_lines=False)

Я выполнил приведенный выше файл, но вам потребуется время, чтобы убедиться, что онвсе строки, которые вы хотите сохранить.Форма результирующего фрейма данных: (10269,9).


Альтернативный, более практичный подход, поскольку этот файл находится в нестандартном формате, и я не знаю, как выглядит ваш ожидаемый результат (сколько столбцовты ожидаешь?):

import csv
import pandas as pd

# using csv with Pandas

filename = 'RF_P92_500_180_023_1.dat'
header = ['Zeit', 'Zyklus Zähler Zähler', 'Weg',
          'Kraft', 'Dehnung', 'Temperatur', 'Temp. oben',
          'Temp. mitte', 'Temp. untens', 'segments',
          'mm', 'kN', '%', '°C', '°C', '°C', '°C']

data = []
with open(filename, 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        if len(row) == 9:
            # flatten a list of lists into single list
            final_row = sum([item.split('\t') for item in row], [])
            data.append(final_row)

df = pd.DataFrame(data=data, columns=header)
print(df.shape) # (10046, 17)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...