Удалить строку из фрейма данных, где она содержит определенную строку - PullRequest
0 голосов
/ 30 октября 2018

У меня есть несколько файлов .csv, где голова выглядит примерно так:

09/07/2014,26268315,,
10/07/2014,6601181,16.3857
11/07/2014,916651,12.5879
14/07/2014,213357,,
15/07/2014,205019,10.8607

Мне нужно прочитать это в фрейм данных и удалить все строки с ,,, однако, когда я читаю .csv в фрейм данных, используя:

df = pd.read_csv(raw_directory+'\\'+filename, error_bad_lines=False,header=None)

Я получаю:

            0         1        2   3
0  09/07/2014  26268315      NaN NaN
1  10/07/2014   6601181  16.3857 NaN
2  11/07/2014    916651  12.5879 NaN
3  14/07/2014    213357      NaN NaN
4  15/07/2014    205019  10.8607 NaN

Может кто-нибудь, пожалуйста, дайте мне знать, как прочитать .csv в кадре данных и получить:

                             0 
 0       09/07/2014,26268315,,
 1  10/07/2014,6601181,16.3857
 2   11/07/2014,916651,12.5879
 3         14/07/2014,213357,,
 4   15/07/2014,205019,10.8607

Мне нужно удалить все строки, в которых присутствует ,,. и затем сохраните скорректированный кадр данных в новый файл .csv. Я собирался использовать:

stringList = [',,']

df = df[~df[0].isin([stringList])]

чтобы убрать строки с ,, присутствовать, чтобы результирующая головка .csv выглядела так:

10/07/2014,6601181,16.3857
11/07/2014,916651,12.5879
15/07/2014,205019,10.8607

Приветствия

1 Ответ

0 голосов
/ 30 октября 2018

Полагаю, здесь возможно удалить все столбцы со всеми NaN с, а затем строки с любыми NaN с:

df = df.dropna(axis=1, how='all').dropna()
print (df)
            0        1        2
1  10/07/2014  6601181  16.3857
2  11/07/2014   916651  12.5879
4  15/07/2014   205019  10.8607

Другое решение - добавить разделитель, значение которого отсутствует в данных, таких как |, а затем отфильтровать по endswith:

df = pd.read_csv(raw_directory+'\\'+filename, error_bad_lines=False,header=None, sep='|')
df = df[~df[0].str.endswith(',')]
#alternative solution - $ is for end of string
#df = df[~df[0].str.contains(',$')]
print (df)
                            0
1  10/07/2014,6601181,16.3857
2   11/07/2014,916651,12.5879
4   15/07/2014,205019,10.8607
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...