我是靠谱客的博主 甜美雪碧,最近开发中收集的这篇文章主要介绍pandas-05 map和replace操作# pandas-05 map和replace操作,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
# pandas-05 map和replace操作
map可以做一个映射,对于操作大型的dataframe来说就非常方便了,而且也不容易出错。replace的作用是替换,这个很好理解。
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# create a dataframe
df1 = DataFrame({'城市':['北京', '上海', '广州'], '人口':[1000, 2000, 1500]})
print(df1)
# 添加一列
# df1['GDP'] = Series([1000, 3000, 2000])
# print(df1)
'''
人口
城市
GDP
0
1000
北京
1000
1
2000
上海
3000
2
1500
广州
2000
'''
dfp_map = {'北京':1000, '上海':2000, '广州':3000}
df1['GDP'] = df1['城市'].map(dfp_map)
print(df1)
'''
人口
城市
GDP
0
1000
北京
1000
1
2000
上海
2000
2
1500
广州
3000
总结:
使用map还是比创建series有优势的,使用map就可以不关心dataframe的index,
只需要关注对应的城市即可。
注意下面的实验
'''
# 再做一个实验,添加一个index
df2 = DataFrame({'城市':['北京', '上海', '广州'], '人口':[1000, 2000, 1500]}, index=['A', 'B', 'C'])
print(df2)
'''
人口
城市
A
1000
北京
B
2000
上海
C
1500
广州
'''
df2['GDP'] = Series([1000, 2000, 3000])
print(df2)
'''
人口
城市
GDP
A
1000
北京
NaN
B
2000
上海
NaN
C
1500
广州
NaN
可以看到答案是nan,这是为什么呢?因为 Series([1000, 2000, 3000])的索引默认是0,1,……
所以就出现了问题。
解决方法是:必须要给series添加指定的索引。
'''
# replace in series
s1 = Series(np.arange(10))
print(s1)
'''
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
dtype: int64
'''
print(s1.replace(1, np.nan)) # 会返回一个新的series,也可以使用字典的方式{1: np.nan}
'''
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
'''
# 还可以采用列表的方式,把多个元素个replace掉
print(s1.replace([1, 2, 3], [10, 20, 30]))
'''
0
0
1
10
2
20
3
30
4
4
5
5
6
6
7
7
8
8
9
9
dtype: int64
'''
map可以做一个映射,对于操作大型的dataframe来说就非常方便了,而且也不容易出错。replace的作用是替换,这个很好理解。
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# create a dataframe
df1 = DataFrame({'城市':['北京', '上海', '广州'], '人口':[1000, 2000, 1500]})
print(df1)
# 添加一列
# df1['GDP'] = Series([1000, 3000, 2000])
# print(df1)
'''
人口
城市
GDP
0
1000
北京
1000
1
2000
上海
3000
2
1500
广州
2000
'''
dfp_map = {'北京':1000, '上海':2000, '广州':3000}
df1['GDP'] = df1['城市'].map(dfp_map)
print(df1)
'''
人口
城市
GDP
0
1000
北京
1000
1
2000
上海
2000
2
1500
广州
3000
总结:
使用map还是比创建series有优势的,使用map就可以不关心dataframe的index,
只需要关注对应的城市即可。
注意下面的实验
'''
# 再做一个实验,添加一个index
df2 = DataFrame({'城市':['北京', '上海', '广州'], '人口':[1000, 2000, 1500]}, index=['A', 'B', 'C'])
print(df2)
'''
人口
城市
A
1000
北京
B
2000
上海
C
1500
广州
'''
df2['GDP'] = Series([1000, 2000, 3000])
print(df2)
'''
人口
城市
GDP
A
1000
北京
NaN
B
2000
上海
NaN
C
1500
广州
NaN
可以看到答案是nan,这是为什么呢?因为 Series([1000, 2000, 3000])的索引默认是0,1,……
所以就出现了问题。
解决方法是:必须要给series添加指定的索引。
'''
# replace in series
s1 = Series(np.arange(10))
print(s1)
'''
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
dtype: int64
'''
print(s1.replace(1, np.nan)) # 会返回一个新的series,也可以使用字典的方式{1: np.nan}
'''
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
'''
# 还可以采用列表的方式,把多个元素个replace掉
print(s1.replace([1, 2, 3], [10, 20, 30]))
'''
0
0
1
10
2
20
3
30
4
4
5
5
6
6
7
7
8
8
9
9
dtype: int64
'''
转载于:https://www.cnblogs.com/wenqiangit/p/11252725.html
最后
以上就是甜美雪碧为你收集整理的pandas-05 map和replace操作# pandas-05 map和replace操作的全部内容,希望文章能够帮你解决pandas-05 map和replace操作# pandas-05 map和replace操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复