Pandas的数据转换函数map、apply、applymap
数据转换函数对比:map、apply、applymap:
- map:只用于Series,实现每个值→值的映射;
- apply:用于Series实现每个值的处理,用于Dataframe实现某个轴的Series的处理;
- applymap:只能用于DataFrame,用于处理该DataFrame的每个元素;
1. map用于Series值的转换
实例:将股票代码英文转换成中文名字
Series.map(dict) or Series.map(function)均可
| 日期 | 公司 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 |
---|
0 | 2019-10-03 | BIDU | 104.32 | 102.35 | 104.73 | 101.15 | 2.24 | 0.02 |
1 | 2019-10-02 | BIDU | 102.62 | 100.85 | 103.24 | 99.50 | 2.69 | 0.01 |
2 | 2019-10-01 | BIDU | 102.00 | 102.80 | 103.26 | 101.00 | 1.78 | -0.01 |
3 | 2019-10-03 | BABA | 169.48 | 166.65 | 170.18 | 165.00 | 10.39 | 0.02 |
4 | 2019-10-02 | BABA | 165.77 | 162.82 | 166.88 | 161.90 | 11.60 | 0.00 |
array(['BIDU', 'BABA', 'IQ', 'JD'], dtype=object)
方法1:Series.map(dict)
| 日期 | 公司 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 | 公司中文1 |
---|
0 | 2019-10-03 | BIDU | 104.32 | 102.35 | 104.73 | 101.15 | 2.24 | 0.02 | 百度 |
1 | 2019-10-02 | BIDU | 102.62 | 100.85 | 103.24 | 99.50 | 2.69 | 0.01 | 百度 |
2 | 2019-10-01 | BIDU | 102.00 | 102.80 | 103.26 | 101.00 | 1.78 | -0.01 | 百度 |
3 | 2019-10-03 | BABA | 169.48 | 166.65 | 170.18 | 165.00 | 10.39 | 0.02 | 阿里巴巴 |
4 | 2019-10-02 | BABA | 165.77 | 162.82 | 166.88 | 161.90 | 11.60 | 0.00 | 阿里巴巴 |
方法2:Series.map(function)
function的参数是Series的每个元素的值
| 日期 | 公司 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 | 公司中文1 | 公司中文2 |
---|
0 | 2019-10-03 | BIDU | 104.32 | 102.35 | 104.73 | 101.15 | 2.24 | 0.02 | 百度 | 百度 |
1 | 2019-10-02 | BIDU | 102.62 | 100.85 | 103.24 | 99.50 | 2.69 | 0.01 | 百度 | 百度 |
2 | 2019-10-01 | BIDU | 102.00 | 102.80 | 103.26 | 101.00 | 1.78 | -0.01 | 百度 | 百度 |
3 | 2019-10-03 | BABA | 169.48 | 166.65 | 170.18 | 165.00 | 10.39 | 0.02 | 阿里巴巴 | 阿里巴巴 |
4 | 2019-10-02 | BABA | 165.77 | 162.82 | 166.88 | 161.90 | 11.60 | 0.00 | 阿里巴巴 | 阿里巴巴 |
2. apply用于Series和DataFrame的转换
- Series.apply(function), 函数的参数是每个值
- DataFrame.apply(function), 函数的参数是Series
Series.apply(function)
function的参数是Series的每个值
| 日期 | 公司 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 | 公司中文1 | 公司中文2 | 公司中文3 |
---|
0 | 2019-10-03 | BIDU | 104.32 | 102.35 | 104.73 | 101.15 | 2.24 | 0.02 | 百度 | 百度 | 百度 |
1 | 2019-10-02 | BIDU | 102.62 | 100.85 | 103.24 | 99.50 | 2.69 | 0.01 | 百度 | 百度 | 百度 |
2 | 2019-10-01 | BIDU | 102.00 | 102.80 | 103.26 | 101.00 | 1.78 | -0.01 | 百度 | 百度 | 百度 |
3 | 2019-10-03 | BABA | 169.48 | 166.65 | 170.18 | 165.00 | 10.39 | 0.02 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
4 | 2019-10-02 | BABA | 165.77 | 162.82 | 166.88 | 161.90 | 11.60 | 0.00 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
DataFrame.apply(function)
function的参数是对应轴的Series
注意这个代码:
1、apply是在stocks这个DataFrame上调用;
2、lambda x的x是一个Series,因为指定了axis=1所以Seires的key是列名,可以用x[‘公司’]获取
| 日期 | 公司 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 | 公司中文1 | 公司中文2 | 公司中文3 | 公司中文4 |
---|
0 | 2019-10-03 | BIDU | 104.32 | 102.35 | 104.73 | 101.15 | 2.24 | 0.02 | 百度 | 百度 | 百度 | 百度 |
1 | 2019-10-02 | BIDU | 102.62 | 100.85 | 103.24 | 99.50 | 2.69 | 0.01 | 百度 | 百度 | 百度 | 百度 |
2 | 2019-10-01 | BIDU | 102.00 | 102.80 | 103.26 | 101.00 | 1.78 | -0.01 | 百度 | 百度 | 百度 | 百度 |
3 | 2019-10-03 | BABA | 169.48 | 166.65 | 170.18 | 165.00 | 10.39 | 0.02 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
4 | 2019-10-02 | BABA | 165.77 | 162.82 | 166.88 | 161.90 | 11.60 | 0.00 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
3. applymap用于DataFrame所有值的转换
| 收盘 | 开盘 | 高 | 低 | 交易量 |
---|
0 | 104.32 | 102.35 | 104.73 | 101.15 | 2.24 |
1 | 102.62 | 100.85 | 103.24 | 99.50 | 2.69 |
2 | 102.00 | 102.80 | 103.26 | 101.00 | 1.78 |
3 | 169.48 | 166.65 | 170.18 | 165.00 | 10.39 |
4 | 165.77 | 162.82 | 166.88 | 161.90 | 11.60 |
| 收盘 | 开盘 | 高 | 低 | 交易量 |
---|
0 | 104 | 102 | 104 | 101 | 2 |
1 | 102 | 100 | 103 | 99 | 2 |
2 | 102 | 102 | 103 | 101 | 1 |
3 | 169 | 166 | 170 | 165 | 10 |
4 | 165 | 162 | 166 | 161 | 11 |
5 | 165 | 168 | 168 | 163 | 14 |
6 | 16 | 15 | 16 | 15 | 10 |
7 | 15 | 15 | 15 | 15 | 8 |
8 | 15 | 16 | 16 | 15 | 11 |
9 | 28 | 28 | 28 | 27 | 8 |
10 | 28 | 28 | 28 | 27 | 9 |
11 | 28 | 28 | 28 | 27 | 10 |
| 日期 | 公司 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 | 公司中文1 | 公司中文2 | 公司中文3 | 公司中文4 |
---|
0 | 2019-10-03 | BIDU | 104 | 102 | 104 | 101 | 2 | 0.02 | 百度 | 百度 | 百度 | 百度 |
1 | 2019-10-02 | BIDU | 102 | 100 | 103 | 99 | 2 | 0.01 | 百度 | 百度 | 百度 | 百度 |
2 | 2019-10-01 | BIDU | 102 | 102 | 103 | 101 | 1 | -0.01 | 百度 | 百度 | 百度 | 百度 |
3 | 2019-10-03 | BABA | 169 | 166 | 170 | 165 | 10 | 0.02 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
4 | 2019-10-02 | BABA | 165 | 162 | 166 | 161 | 11 | 0.00 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |