Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pandas删除空数据帧_Python_Regex_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 使用pandas删除空数据帧

Python 使用pandas删除空数据帧,python,regex,python-3.x,pandas,dataframe,Python,Regex,Python 3.x,Pandas,Dataframe,我编写了以下代码来使用regex请求页面,并查找类似利率的字符串。整个代码工作正常;但是,它正在创建多个空数据帧,我无法获得删除空帧的代码来清理我的输出。我一直尝试使用.dropna、.drop和.empty来尝试和弃用数据帧,但输出保持不变,并使用我已经获得的信息继续打印空数据帧。有没有一种方法我不知道,可以摆脱这些空帧。代码和输出如下: plcompetitors = ['https://www.lendingclub.com/loans/personal-loans',

我编写了以下代码来使用regex请求页面,并查找类似利率的字符串。整个代码工作正常;但是,它正在创建多个空数据帧,我无法获得删除空帧的代码来清理我的输出。我一直尝试使用.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: []

你不打印/使用空的怎么样

if df.empty:
  continue


你不打印/使用空的怎么样

if df.empty:
  continue

根据一个只有NAN的df将返回False for.empty,所以如果这很重要,那么首先使用dropna。如果有任何NaN太多,可以使用“any”,如果只想删除一行/一列,则可以使用“all”(可能是您想要的)


根据一个只有NAN的df将返回False for.empty,所以如果这很重要,那么首先使用dropna。如果有任何NaN太多,您可以使用“any”,如果您只想删除一行/一列,则可以使用“all”(如果它是所有NaN(可能是您想要的)

当然就是这么简单。非常感谢。哇,我觉得自己很愚蠢。欣赏that@dtrinh简单但不广为人知。我当然不认为这是那么简单。非常感谢。哇,我觉得自己很愚蠢。欣赏that@dtrinh简单但不广为人知。我不这么认为
if df.dropna(how='all').empty:
    continue