js replace所有的?全部替换_pandas数据替换详细说明及案例

b69997df8452f994fc2570e3f97a825d.png

1、替换 df.replace(to_replace,regex,......)

Series或DataFrame可以通过replace方法可以实现元素值的替换操作,但空值无法处理。

  • to_replace:被替换值,支持单一值,列表,字典,正则表达式。

  • regex:是否使用正则表达式,默认为False。

df = pd.read_excel(r"D:\Case_data/data01.xlsx",encoding="utf-8")display("数据:",df)print("输出行列数:",df.shape)display("输出统计信息:",df.describe()) print("输出空值信息:","",df.info())

30c1a89d3df397c9843a2d974f63b4d2.png

# 替换。支持单个值,字典,列表,正则表达式,替换都是拷贝后的替换,原来的df不变df["是否已婚"] = df["是否已婚"].replace("否", "0") #单个值的替换df["是否已婚"] = df["是否已婚"].replace("是", "1") #单个值的替换df["资产(万)"] = df["资产(万)"].replace({50:52,30:"35"}) # 字典 替换df["车产1"] = df["车产"].replace([0,1],["否","是"]) # 列表对应替换df["房产1"] = df["房产"].replace([1,2],"是") # 列表替换为同一个值df["编号1"] = df["编号"].replace('A(.*)', "a", regex=True) #正则表达式替换display(df)

5b8db26694c9cf250bf4f958d739b591.png

2、索引替换

df["房产1"][df["房产1"].astype("str") == "0"]="否"df["资产(万)"][df["资产(万)"].astype("int") >= 60]="优秀"display(df)

24edf1f62548a9bf52c7d4b373ab2c19.png

3、映射替换

  • map:对当前Series的值进行映射转换。参数可以是一个Series, 根据Series的index来进行映射,一个字典或者是一个函数。

  • apply:通过函数实现映射转换。【Series传递元素,DataFrame传递行或列。】

  • applymap:通过函数实现元素级的映射转换。

# 通过apply或map来实现。def fx(item): if item >= 1: Z = "合格" else: Z = "不合格" return Zdf["Z"] = df["房产"].map(fx)df["Z1"] = df["房产"].apply(fx)df["Z2"] = df[["房产"]].applymap(fx)display(df)

43e6c6c5670ba7b09821fc745d921337.png

4、空值替换

发现空值

df.shape  ; df.info() ; df.describe() 

删除空值

df.dropna(axis=0/1,inplace=True/False,how='any' / how='all' / thresh=n)

说明:

  • axis:指定丢弃行或者丢弃列(默认为丢弃行axis = 0)。axis=0 / axis=1

  • inplace:指定是否就地修改,默认为False。是否就地操作

  • how:指定dropna丢弃缺失值的行为,默认为any(只要存在就删除)。all (该行(列)全部为空才删除)/ any

  • thresh:当非空数值达到该值时,保留数据,否则删除。如 thresh = 3,弥补how的不足(与how不同时使用)

填充缺失值

df.fillna(value / method ='ffill' [,limit=n] / method='bfill' [,limit=n] ,[inplace=True/False])

说明:

  • value:填充所使用的值。固定值填充,支持直接输入值,支持字典,支持Series,需要注意的是字典的key值,Series的index要与df的列名称对应。

  • method:指定前值(上一个有效值)填充(pad / ffill),还是后值(下一个有效值)填充(backfill / bfill)。

  • limit:如果指定method,表示最大连续NaN的填充数量,如果没有指定method,则表示最大的NaN填充数量。

  • inplace:指定是否就地修改,默认为False。

5、重复值替换

发现重复值

我们可以通过duplicated方法来发现重复值。该方法返回Series类型的对象,值为布尔类型,表示是否与上一行重复。

r = df[df.duplicated( [subset=[0,1,...],keep='first'/'last'/False)] )]

display(r.sort_values([1,0,...], axis=0))

参数说明:

  • subset:指定依据哪些列判断是否重复,默认为所有列。

  • keep:指定记录被标记为重复(True)的规则。默认为first。

删除重复值

通过drop_duplicates可以删除重复值。

df.drop_duplicates([subset=[0,1,...], keep='first'/'last', inplace=Ture/False])

参数说明:

  • subset:指定依据哪些列判断是否重复,默认为所有列,如subset = ["姓名","编码","资产"]。

  • keep:指定记录删除(或保留)的规则。默认为first,所以一般不要再自行指定keep啦。

  • inplace:指定是否就地修改,默认为False。

  • #如果想了解关于当前这个方法的更多参数。怎么办?
    df.drop_duplicates
    # 按组合键:shift + tab 建   4次

6、元素内容替换

s = pd.Series(["10 1 ",1001,10001])s = s.astype("str") #先转换为字符串类型len_s = s.str.len() #计算每个元素的长度isdigit_s = s.str.isdigit() #查看每个元素是否只包含数字,返回True/Falsecut_s = s.str[0:2] #切片截取字符串split_s = s.str.split(" ") #指定字符进行切割,返回列表strip_s = s.str.strip(' ') #删除左右两端的空格,中间部分依然保留replace_s = s.str.replace(" ","") #将指定的字符替换为其他字符,这里将空格替换删除display(len_s,isdigit_s,cut_s,split_s,strip_s,replace_s)

46705dc304232bcb64d0eba3bc121db7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值