前面完成Crawler类的构造函数分析,接着下来我们来分析这个类的第一个开始调用的函数,Crawler类被创建之后,就会立即调用crawl函数,代码如下:
class CrawlerRunner:
…
def _crawl(self, crawler, args, *kwargs):
self.crawlers.add(crawler)
d = crawler.crawl(*args, kwargs)**
self._active.add(d)
…
在这里传送给crawl函数的参数是从命令行里传过来的参数,大部分重要的工作都是在crawl函数里完成的。这个函数的代码如下:
Original: https://blog.csdn.net/caimouse/article/details/117396333
Author: caimouse
Title: 爬虫日记(84):Scrapy的Crawler类(三)
相关阅读
Title: pandas数据筛选与排序sort_index,sort_values
第一步数据标记
标记数据非常简单, 直接获取数据然后进行判断即可
bools = df['value'] > 100
第二步 筛选数据
使用标记筛选数据
df_new = df[bools]
这是 只有一个筛选条件的情况下, 如果有多个条件就可以使用逻辑运算符
在我们的需求中,需要的数据是同时满足两个条件,所以我们使用逻辑与运算连接两个值,最后获取同时满足两个条件的值
先设定多个筛选条件
bools01 = df['value1'] > 300
bools02 = df['value2'] > 100
在获取数据的时候, 因为有多个条件, 所以需要使用逻辑运算符进行运算
如果 想要筛选出两个条件都成立的情况 就可使用&
df_new2 = df[bools01 & bools02]
补充筛选方法
- series.str 会将每一个数据转换成字符串
- contains() 判断字符串是否含有指定子串,返回的是bool类型
import pandas as pd
dict={
'R': ['A78', 'A94', 'A6L', 'A88'],
'B': ['B40', 'B51', 'B82', 'B32'],
'C': ['C90', 'C41', 'C26', 'C23']}
df=pd.DataFrame(dict1)
df.head()
bools = df['R'].str.contains("L")
new_df = df[bools]
sort_index()、sort_values(),在排序的时候我们要特别注意,这个方法是直接对我们的数据进行了排序,并不会生成一个新的数据,所以排序操作我们不需要将它赋值给新的变量
sort_index()
sort_index() 方法是按照行索引进行排序, 所以读取出来的数据就一定要有行索引,
可以在读取数据的时候指定一个行索引
df = pd.read_excel('../data/rate.xlsx',index_col='Country Code')
示例
import pandas as pd
dict1={
'R': ['A78', 'A94', 'A6L', 'A88'],
'B': ['B40', 'B51', 'B82', 'B32'],
'C': ['C90', 'C41', 'C26', 'C23']}
df1=pd.DataFrame(dict1, index=['V8', 'V1', 'V9', 'V6'])
df1.head()
df1.sort_index(ascending=False, inplace=True)
df1.head()
- inplace=True参数是针对在对读取的文件的时候, 用来控制是否直接对原始数据进行修改
- ascending可以控制排序的顺序, 默认值为True从小到大排序, 当它被设置为False的时候就可以使用倒序排序
sort_values()
sort_values() 可以指定具体列进行排序, 它比sort_index()方法多了一个参数 by
- by : 决定了是按数据中哪一列进行排序, 将需要按照某列排序的列名赋值个by即可
- inplace=True 用来控制是否直接对原始数据进行修改
- ascending可以控制排序的顺序, 默认值为True从小到大排序, 当它被设置为False的时候就可以使用倒序排序
- 好像重复了, 算了就当凑字符啦
df.sort_values(by='value', ascending=False, inplace=True)
也可根据多列进行排序, 只需在by后面换成一个列表, 列表中的元素就是排序指定的列
df.sort_values(by=['value1','value2'], ascending=False, inplace=True)
这两种排序, 我感觉不都是按照列就行排序的吗, 一个是指定的列, 一个按照索引(索引不也是一列?), 使用起来还是 仁者见仁智者见智把
Original: https://blog.csdn.net/lxb_wyf/article/details/114198726
Author: 蓝小白1024
Title: pandas数据筛选与排序sort_index,sort_values
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/354377/
转载文章受原作者版权保护。转载请注明原作者出处!