- position.avg + ‘k’;这样会报错因为前边是float,后边是str
- 把float转换为str之后再进行字符串拼接
- astype转换字符串数据类型
- apply即可以针对series,也可以针对dataframe
- 匿名函数,输入x,输出str(x)+’k’
- 输入的值就是position.avg数组里面的每个值
- apply就是把后边的函数运用在这个数组的每个值上
- (1)(2)两个函数等价:
- 甚至可以在定义的函数里进行逻辑判断
- 本身想要实现这个功能,可能需要过滤、赋值,也可能使用bins(分组),但是apply的使用会更加清晰
- 把avg删掉,position.apply(func)会报错,因为series是具体针对里面的某个值,但是是数据框的话,会针对所有切出来的元素去应用,则报错
- axis=0就是说把函数运用在每一列;axis=1则是说把函数运用在每一行
- 依然是进行一个判断,这里的变化是x变为了x.avg
- 虽然我们是针对的行,但是行对我们来说,输入的依旧是个series
- 但是我们把axis=0改成了axis=1,就变成了逐行,就是说每一行都会去应用,但行里面会有很多的列、字段,所以这时候我们输入给func的是一个series(一维数组)
- 当把这个一维数组输入进去的时候,一定要指明x.avg,要不然很容易报错
- 这时候输入的是series,所以在进行判断的时候,要把series里面薪资提取出来,否则还是会有错误
- axis=0针对列也一样,可能就是具体的某一个列相关的字段
- 可读性更好
- 匿名函数里面x,指的是series
- 进行平方处理
```python
import pandas as pd
position = pd.read_csv(‘position.csv’)
company = pd.read_csv(‘company_sql.csv’,encoding=’gbk’)
position.avg + ‘k’;这样会报错因为前边是float,后边是str
把float转换为str之后再进行字符串拼接
astype转换字符串数据类型
position.avg.astype(str)+’k’
apply即可以针对series,也可以针对dataframe
匿名函数,输入x,输出str(x)+’k’
输入的值就是position.avg数组里面的每个值
apply就是把后边的函数运用在这个数组的每个值上
(1)(2)两个函数等价:
(1) position.avg.apply(lambda x:str(x)+’k’) (2) def func(x): return str(x)+’k’ position.avg.apply(func)
甚至可以在定义的函数里进行逻辑判断
本身想要实现这个功能,可能需要过滤、赋值,也可能使用bins(分组),但是apply的使用会更加清晰
def func(x): if x>20:return ‘20k+’ else:return ‘0~20k’ position.avg.apply(func)
把avg删掉,position.apply(func)会报错,因为series是具体针对里面的某个值,但是是数据框的话,会针对所有切出来的元素去应用,则报错
axis=0就是说把函数运用在每一列;axis=1则是说把函数运用在每一行
def func(x): if x.avg>20: return ‘20k+’ else: return ‘0~20k’ position.apply(func,axis=1)
依然是进行一个判断,这里的变化是x变为了x.avg
虽然我们是针对的行,但是行对我们来说,输入的依旧是个series
但是我们把axis=0改成了axis=1,就变成了逐行,就是说每一行都会去应用,但行里面会有很多的列、字段,所以这时候我们输入给func的是一个series(一维数组)
当把这个一维数组输入进去的时候,一定要指明x.avg,要不然很容易报错
这时候输入的是series,所以在进行判断的时候,要把series里面薪资提取出来,否则还是会有错误
axis=0针对列也一样,可能就是具体的某一个列相关的字段
position.iloc[0]
可读性更好
def func(x): if x>20: return ‘20k+’ else: return ‘0~20k’
匿名函数里面x,指的是series
position.apply(lambda x:func(x.avg),axis=1)
进行平方处理
position.avg.apply(lambda x:x*x) ``` apply就是熟能生巧,后续把目光放在apply的分组上面
