美文网首页
DataFrame的map即replace

DataFrame的map即replace

作者: Chaweys | 来源:发表于2020-11-23 23:32 被阅读0次

Series.map(dict, na_action)
dict:     根据字典的键值对,替换Series里面的值,如果字典中,没有找到Series中对应的值,则赋值为NaN
na_action:如果传入ignore,则跳过对空值的操作

#coding=utf-8
import pandas as pd
import numpy as np

df=pd.read_csv("map.csv")
print(df)
'''
    height  weight  smoker gender  age   color
0      178      52   False      -   89   black
1      182      55   False      女   81   white
2      169      64   False      女   26  yellow
3      189      73   False      男   63  yellow
4      177      80   False      女   75   white
5      168      53   False      男   70  yellow
...
'''


#将gender性别中的男替换为1,女替换为0
print(df["gender"].map({"男":1,"女":0}))
print(df.gender.map({"男":1,"女":0}))
'''
由结果得知:第一行的gender的-被替换为NaN
0     NaN
1     0.0
2     0.0
3     1.0
4     0.0
5     1.0
...
'''


#na_action传入ignore跳过对空值的处理
se=pd.Series(['cat','dog',np.nan,'rabbit'])
print(se)
'''
看结果,该Series有个空值
0       cat
1       dog
2       NaN
3    rabbit
dtype: object
'''

print(se.map('I am {}'.format))
'''
看结果,对空值nan并未作处理
0       I am cat
1       I am dog
2       I am nan
3    I am rabbit
dtype: object
'''

print(se.map('I am {}'.format,na_action="ignore"))
'''
看结果,直接对空值忽略,不作处理
dtype: object
0       I am cat
1       I am dog
2            NaN
3    I am rabbit
dtype: object
'''





#replace替换:和map的区别在于:replace只替换匹配到的值,未匹配到的值不作处理
df=pd.DataFrame(
    {"名称":["产品1","产品2","产品3","产品4","产品5"],
    "金额":[0,0.48,"F",0.74,0],
    "合计":[0.37,0.28,"C",0.57,0.06]}
)
print(df)
'''
     合计   名称    金额
0  0.37     产品1     0
1  0.28     产品2  0.48
2     C     产品3     F
3  0.57     产品4  0.74
4  0.06     产品5     0

'''
#指定列替换,指定"金额"列里的"F"替换为0
print(df["金额"].replace({"F":0}))
'''
0    0.00
1    0.48
2    0.00
3    0.74
4    0.00
Name: 金额, dtype: float64
'''

#指定列替换,指定"金额"列里的"F"替换为0,且对原df对象生效
df["金额"].replace({"F":0},inplace=True)
print(df)
'''
     合计   名称    金额
0  0.37     产品1  0.00
1  0.28     产品2  0.48
2     C     产品3  0.00
3  0.57     产品4  0.74
4  0.06     产品5  0.00
'''

#不针对某列,针对所有列的替换
print(df.replace("产品1","product"))
'''
     合计       名称     金额
0  0.37         product  0.00
1  0.28         产品2    0.48
2     C         产品3    0.00
3  0.57         产品4    0.74
4  0.06         产品5    0.00
'''

相关文章

网友评论

      本文标题:DataFrame的map即replace

      本文链接:https://www.haomeiwen.com/subject/hmreiktx.html