Pandas入门系列(九) -- Map和replace

import pandas as pd
import numpy  as np
from pandas import Series, DataFrame

df1 = DataFrame({"城市":["北京","上海","广州"], "人口":[1000,2000,1500]})
df1
Out[5]: 
     人口  城市
0  1000  北京
1  2000  上海
2  1500  广州

# 用Series添加一列
df1['GDP'] = Series([900,1600,3000])
df1
Out[7]: 
     人口  城市   GDP
0  1000  北京   900
1  2000  上海  1600
2  1500  广州  3000

# 使用map添加一列
gdp_map = {"北京":999, "上海":888,"广州":777}
df1['GDP'] = df1['城市'].map(gdp_map)
df1
Out[10]: 
     人口  城市  GDP
0  1000  北京  999
1  2000  上海  888
2  1500  广州  777

# 修改索引
df1.index = ['A','B','C']
df1
Out[12]: 
     人口  城市  GDP
A  1000  北京  999
B  2000  上海  888
C  1500  广州  777

# Series不方便的地方,默认索引为0,1,2...
df1["天气"] = Series(["多云","大雨","小雨"])
df1  # 输出值为nan
Out[14]: 
     人口  城市  GDP   天气
A  1000  北京  999  NaN
B  2000  上海  888  NaN
C  1500  广州  777  NaN

# 需要修改索引,map则不用
df1["天气"] = Series(["多云","大雨","小雨"], index=['A','B','C'])
df1
Out[16]: 
     人口  城市  GDP  天气
A  1000  北京  999  多云
B  2000  上海  888  大雨
C  1500  广州  777  小雨

# replace
s1 = Series(np.arange(10))
s1
Out[18]: 
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
dtype: int32

# 替换一个值,也可以使用字典的方式替换(略)
s1.replace(1,np.nan)
Out[19]: 
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

# 替换多个值
s1.replace([1,2,4], [np.nan,np.nan,np.nan])
Out[20]: 
0    0.0
1    NaN
2    NaN
3    3.0
4    NaN
5    5.0
6    6.0
7    7.0
8    8.0
9    9.0
dtype: float64

猜你喜欢

转载自blog.csdn.net/weixin_39778570/article/details/81088321
今日推荐