Удаление пустых кадров с пандами - PullRequest
0 голосов
/ 27 июня 2018

Я написал следующий код для использования регулярных выражений для запроса страниц и поиска строк, похожих на процентные ставки. Общий код работает; однако создает несколько пустых фреймов данных, и я не могу заставить код удалить пустые фреймы, чтобы очистить мой вывод. Я пытался использовать .dropna, .drop и .empty, чтобы попробовать и осуждают кадры данных, но вывод остается неизменным и продолжает печатать пустые кадры данных с информацией, которая у меня уже есть. Есть ли способ, который я не знаю, который мог бы избавиться от этих пустых кадров. Код и вывод ниже:

plcompetitors = ['https://www.lendingclub.com/loans/personal-loans',
                'https://www.marcus.com/us/en/personal-loans',
                'https://www.discover.com/personal-loans/']

#cycle through links in array until it finds APR rates/fixed or variable using regex
for link in plcompetitors:
    cdate = datetime.date.today()
    l = r.get(link)
    l.encoding = 'utf-8'
    data = l.text
    soup = bs(data, 'html.parser')
    paragraph = soup.find_all(text=re.compile('[0-9]%'))
    for n in paragraph:
        matches = []
        matches.extend(re.findall('(?i)\d+(?:\.\d+)?%\s*(?:to|-)\s*\d+(?:\.\d+)?%', n.string))
        sint = pd.Series(matches)
        qdate = pd.Series([datetime.datetime.now()]*len(sint))
        slink = pd.Series([link]*len(sint))
        df = pd.concat([qdate,sint,slink],axis=1)
        df.columns = ['Date','Interest Rate', 'URL']
        print(df)

Выход:

  ...
0 ...
1 ...

[2 rows x 3 columns]
 ...
0 ...

[1 rows x 3 columns]
 ...
0 ...
1 ...
2 ...
3 ...

[4 rows x 3 columns]
Empty DataFrame
Columns: [Date, Interest Rate, URL]
Index: []
Empty DataFrame
Columns: [Date, Interest Rate, URL]
Index: []
Empty DataFrame
Columns: [Date, Interest Rate, URL]
Index: []
Empty DataFrame
Columns: [Date, Interest Rate, URL]
Index: []
  ...
0 ...

[1 rows x 3 columns]
Empty DataFrame
Columns: [Date, Interest Rate, URL]
Index: []
Empty DataFrame
Columns: [Date, Interest Rate, URL]
Index: []
Empty DataFrame
Columns: [Date, Interest Rate, URL]
Index: []
Empty DataFrame
Columns: [Date, Interest Rate, URL]
Index: []

Ответы [ 2 ]

0 голосов
/ 27 июня 2018
if df.dropna(how='all').empty:
    continue

в соответствии с https://pandas.pydata.org/pandas-docs/version/0.18/generated/pandas.Series.empty.html. Df только с nans вернет False для .empty, так что, если это важно, сначала использовать dropna. Вы можете использовать 'any', если количество NaN слишком велико, или 'all', если вы хотите удалить строку / столбец, только если все NaN (вероятно, то, что вы хотите)

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

Как насчет того, чтобы вы просто не печатали / не использовали пустые?

if df.empty:
  continue

Или

if not df.empty:
  print(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...