DataFrame插入新列,引出Map
代码语言:javascript复制import numpy as np
import pandas as pd
from pandas import Series, DataFrame
代码语言:javascript复制# 通过字典创建DataFrame
df1 = DataFrame({'城市':['北京','上海','广州'],'人口':[1000,2000,3000]})
df1
城市 | 人口 | |
---|---|---|
0 | 北京 | 1000 |
1 | 上海 | 2000 |
2 | 广州 | 3000 |
# 给DataFrame增加一列(直接赋值)
# 缺点:要关注顺序
df1['GDP'] = Series([100,200,300])
df1
城市 | 人口 | GDP | |
---|---|---|---|
0 | 北京 | 1000 | 100 |
1 | 上海 | 2000 | 200 |
2 | 广州 | 3000 | 300 |
# 通过城市增加GDPMap
# 优点:无需关注顺序
gdp_map = {'北京':300,'上海':400,'广州':500}
# 也是新一列就是赋值方式是map
df1['GDPMap'] = df1['城市'].map(gdp_map)
df1
城市 | 人口 | GDP | GDPMap | |
---|---|---|---|---|
0 | 北京 | 1000 | 100 | 300 |
1 | 上海 | 2000 | 200 | 400 |
2 | 广州 | 3000 | 300 | 500 |
直接Series插入的列(坑:1顺序2索引值改动对应)
代码语言:javascript复制# 索引值如果自定义
# 通过字典创建DataFrame
df1 = DataFrame({'城市':['北京','上海','广州'],'人口':[1000,2000,3000]},index=['A','B','C'])
df1
城市 | 人口 | |
---|---|---|
A | 北京 | 1000 |
B | 上海 | 2000 |
C | 广州 | 3000 |
# 问题: 新列值为nan
# 给DataFrame增加一列(直接赋值)
# 缺点:要关注顺序
df1['GDP'] = Series([100,200,300])
df1
城市 | 人口 | GDP | |
---|---|---|---|
A | 北京 | 1000 | NaN |
B | 上海 | 2000 | NaN |
C | 广州 | 3000 | NaN |
# 解决: 指定列值
# 麻烦,因此建议直接用map()字典对应
df1['GDP'] = Series([100,200,300], index=['A','B','C'])
df1
城市 | 人口 | GDP | |
---|---|---|---|
A | 北京 | 1000 | 100 |
B | 上海 | 2000 | 200 |
C | 广州 | 3000 | 300 |
Replace in Series
代码语言:javascript复制s1 = Series(np.arange(10))
s1
代码语言:javascript复制0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
代码语言:javascript复制# 替换(字典也行)
s1.replace(1,np.nan)
代码语言:javascript复制0 0.0
1 NaN
2 2.0
3 3.0
4 4.0
5 5.0
6 6.0
7 7.0
8 8.0
9 9.0
dtype: float64
代码语言:javascript复制# 多数据同时替换
s1.replace([1,2,3],[20,30,40])
代码语言:javascript复制0 0
1 20
2 30
3 40
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64