99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀超詳細(xì)教程 | pandas合并之a(chǎn)ppend和concat
超詳細(xì)教程 | pandas合并之a(chǎn)ppend和concat
2020-05-27
收藏

本篇文章主要介紹了pandas中對(duì)series和dataframe對(duì)象進(jìn)行連接的方法:pd.append()和pd.concat(),文中通過(guò)示例代碼對(duì)這兩種方法進(jìn)行了詳細(xì)的介紹,希望能對(duì)各位python小白的學(xué)習(xí)有所幫助。

一、df.append(df)

描述:append方法用以在表尾中添加新的行,并返回追加后的數(shù)據(jù)對(duì)象,若追加的行中存在原數(shù)據(jù)沒(méi)有的列,會(huì)新增一列,并用nan填充;若追加的行數(shù)據(jù)中缺少原數(shù)據(jù)某列,同樣以nan填充

語(yǔ)法:df.append(other, ignore_index=False, verify_integrity=False, sort=None)

參數(shù)說(shuō)明:

  • other:要追加的數(shù)據(jù),可以是dataframe,series,字典,列表
  • ignore_index:兩個(gè)表的index是否有實(shí)際含義,默認(rèn)為False,若ignore_index=True,表根據(jù)列名對(duì)齊合并,生成新的index
  • verify_integrity:默認(rèn)為False,若為T(mén)rue,創(chuàng)建具有重復(fù)項(xiàng)的索引時(shí)引發(fā)ValueError
  • sort:默認(rèn)為False,若為T(mén)rue如果’ self ‘和’ other '的列沒(méi)有對(duì)齊,則對(duì)列進(jìn)行排序。

下面對(duì)append方法的每個(gè)參數(shù)進(jìn)行詳細(xì)介紹:

第一個(gè)參數(shù)為other:要追加的數(shù)據(jù),可以是dataframe,series,字典,列表甚至是元素;但前后類型要一致。

  1. 將數(shù)據(jù)追加到series
# 將數(shù)據(jù)追加到series
<<< a=df.iloc[0,:]
<<< b=df.iloc[6,:]
<<< a.append(b)      #需賦給新值,不改變?cè)瓟?shù)組
A     0
B     1
C     2
D     3
E     4
F     5
A    36
B    37
C    38
D    39
E    40
F    41
dtype: int32
<<< a
A    0
B    1
C    2
D    3
E    4
F    5
Name: S1, dtype: int32

<<< c=a.append(b)    # 保存為c
<<< c
A     0
B     1
C     2
D     3
E     4
F     5
A    36
B    37
C    38
D    39
E    40
F    41
dtype: int32
  1. 將數(shù)據(jù)追加到dataframe
# 將數(shù)據(jù)追加到dataframe
<<< a=df.iloc[0:2,:]
<<< b=df.iloc[4:6,:] 
<<< c=a.append(b)           # 注意是縱向追加,不支持橫向追加
<<< c
    A	B	C	D	E   F
S1	0	1	2	3	4	5
S2	6	7	8	9	10	11
S5	24	25	26	27	28	29
S6	30	31	32	33	34	35

注意:獲取單行得到的結(jié)果是一維數(shù)組,當(dāng)一維數(shù)組[6,:]和二維數(shù)組[2,6]追加時(shí),會(huì)得到8*7的數(shù)組,匹配不上的地方用NA填充。

# 將二維數(shù)組追加到一維數(shù)組
<<< a=df.iloc[0,:]
<<< b=df.iloc[4:6,:] 
<<< c=a.append(b)          
<<< c
      0	  A	  B	  C	  D	  E	  F
A	0.0	NaN	NaN	NaN	NaN	NaN	NaN
B	1.0	NaN	NaN	NaN	NaN	NaN	NaN
C	2.0	NaN	NaN	NaN	NaN	NaN	NaN
D	3.0	NaN	NaN	NaN	NaN	NaN	NaN
E	4.0	NaN	NaN	NaN	NaN	NaN	NaN
F	5.0	NaN	NaN	NaN	NaN	NaN	NaN
S5	NaN	24.0	25.0	26.0	27.0	28.0	29.0
S6	NaN	30.0	31.0	32.0	33.0	34.0	35.0
  1. 將數(shù)據(jù)追加到list
  • list是一維:以列的形式來(lái)進(jìn)行追加操作
  • list是二維:以行的形式來(lái)進(jìn)行追加操作
  • list是三維:只添加一個(gè)值注意:追加到列表時(shí),是在原數(shù)組改動(dòng),是在原數(shù)組改動(dòng),是在原數(shù)組改動(dòng)
# 列表追加到列表
<<< a=[]
<<< b=df.iloc[6,:].tolist()
<<< a.append(b)
<<< a
[[36, 37, 38, 39, 40, 41]]

# 序列追加到列表
<<< a=[1,2,3,4,5,6,7]
<<< b=df.iloc[6,:]
<<< a.append(b)
<<< a
[1, 2, 3, 4, 5, 6, 7, A    36
 B    37
 C    38
 D    39
 E    40
 F    41
 Name: S7, dtype: int32]
  1. 追加字典TypeError: Can only append a Series if ignore_index=True or if the Series has a name
<<< df1=pd.DataFrame()
<<< a={'A':1,'B':2}
<<< df1=df1.append(a,ignore_index=True)
<<< df1
    A	B
0	1	2
  1. 將單個(gè)元素追加到列表

append方法也可以將單個(gè)元素追加到列表(其他對(duì)象不行),會(huì)自動(dòng)將單個(gè)元素轉(zhuǎn)為列表對(duì)象,再進(jìn)行追加操作

# 單個(gè)元素進(jìn)行追加
<<< a=[1,2,3,4,5,6,7,8]
<<< a.append(9)
<<< a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
  1. 將其他類型對(duì)象追加到dataframe當(dāng)dataframe使用append方法添加series或字典的時(shí)候,必須要設(shè)置name,設(shè)置name名稱將會(huì)作為index的name,否則會(huì)報(bào)錯(cuò)提示:TypeError: Can only append a Series if ignore_index=True or if the Series has a name
<<< df1=pd.DataFrame()
<<< ser=pd.Series({"x":1,"y":2},name="a")
<<< df1=df1.append(ser)
<<< df1
    x   y
a	1	2

如果不添加name,也可以添加參數(shù)ignore_index:

<<< df1=pd.DataFrame()
<<< ser=pd.Series({"x":1,"y":2})
<<< df1=df1.append(ser,ignore_index=True)
<<< df1
    x   y
a	1	2

第二個(gè)參數(shù):兩個(gè)表的index是否有實(shí)際含義,默認(rèn)ignore_index=False,若為T(mén)rue,表根據(jù)列名對(duì)齊合并,生成新的index。

<<< a=df.iloc[0:2,:]
<<< b=df.iloc[4:6,:]
<<< a.append(b,ignore_index=True)  
    A   B	C   D   E   F
0	0	1	2	3	4	5
1	6	7	8	9	10	11
2	24	25	26	27	28	29
3	30	31	32	33	34	35

<<< a=df.iloc[0:2,:]
<<< b=df.iloc[4:6,:]
<<< a.append(b)
    A	B	C	D	E   F
S1	0	1	2	3	4	5
S2	6	7	8	9	10	11
S5	24	25	26	27	28	29
S6	30	31	32	33	34	35

在dataframe中,使用append方法進(jìn)行表合并時(shí),二者匹配不上的地方用NAN填充。

<<< df1=df.copy()
<<< df2=pd.DataFrame(np.arange(8).reshape(2,4),columns=<<<['s1','s2','s3','s4'])
<<< df_new=df1.append(df2,ignore_index=True)
<<< df_new
    A	B	C	D	E	F	S1	S2	s3	s4
0	0	1	2	3	4	5	NaN	NaN	NaN	NaN
1	6	7	8	9	10	11	NaN	NaN	NaN	NaN
2	12	13	14	15	16	17	NaN	NaN	NaN	NaN
3	18	19	20	21	22	23	NaN	NaN	NaN	NaN
4	24	25	26	27	28	29	NaN	NaN	NaN	NaN
5	30	31	32	33	34	35	NaN	NaN	NaN	NaN
6	36	37	38	39	40	41	NaN	NaN	NaN	NaN
7	NaN	NaN	NaN	NaN	NaN	NaN	0	1	2	3
8	NaN	NaN	NaN	NaN	NaN	NaN	4	5	6	7

第三個(gè)參數(shù)為verify_integrity:默認(rèn)為False 參數(shù)用于檢查結(jié)果對(duì)象新連接軸上的索引是否有重復(fù)項(xiàng),有的話引發(fā) ValueError,可以看到這個(gè)參數(shù)的作用與ignore_index 是互斥的。 (如果 ignore_index = True ,則意味著index不能是重復(fù)的,而ignore_index = False ,則意味著index可以是重復(fù)的)

<<< df1=df.copy()
<<< df2=pd.DataFrame(np.arange(8).reshape(2,4),columns=   <<< ['G','H','I','J'],index=['S1','S8'],dtype=int)
<<< pd.set_option('precision',0)
<<< df_new=df1.append(df2,verify_integrity=False)
<<< df_new
    A	B	C	D	E	F	G	H	I	J
S1	0	1	2	3	4	5	NaN	NaN	NaN	NaN
S2	6	7	8	9	10	11	NaN	NaN	NaN	NaN
S3	12	13	14	15	16	17	NaN	NaN	NaN	NaN
S4	18	19	20	21	22	23	NaN	NaN	NaN	NaN
S5	24	25	26	27	28	29	NaN	NaN	NaN	NaN
S6	30	31	32	33	34	35	NaN	NaN	NaN	NaN
S7	36	37	38	39	40	41	NaN	NaN	NaN	NaN
S1	NaN	NaN	NaN	NaN	NaN	NaN	0	1	2	3
S8	NaN	NaN	NaN	NaN	NaN	NaN	4	5	6	7

注意:當(dāng)需要連接的兩個(gè)表的index有重復(fù)值時(shí),設(shè)置ignore_index = True則會(huì)報(bào)錯(cuò)。

第四個(gè)參數(shù)為sort:默認(rèn)是False,該屬性在pandas的0.23.0版本才有,若為T(mén)rue,則對(duì)兩個(gè)表沒(méi)匹配上的列名,進(jìn)行排序,若為False,不排序。

<<< df1=pd.DataFrame(np.arange(8).reshape(2,4),columns=   <<< ['A1','B1','C1','D1'],index=['S1','S2'])
<<< df2=pd.DataFrame(np.arange(8).reshape(2,4),columns=   <<< ['A2','B2','C2','D2'],index=['S1','S3'])
<<< pd.set_option('precision',0)
<<< df_new=df1.append(df2,sort=True)
<<< df_new
    A1	A2	B1	B2	C1	C2	D1	D2
S1	0	NaN	1	NaN	2	NaN	3	NaN
S2	4	NaN	5	NaN	6	NaN	7	NaN
S1	NaN	0	NaN	1	NaN	2	NaN	3
S3	NaN	4	NaN	5	NaN	6	NaN	7

二、pd.concat([df_01,df_02])

描述:concat方法用以將兩個(gè)或多個(gè)pandas對(duì)象根據(jù)軸(橫向/縱向)進(jìn)行拼接,concat函數(shù)是在pandas命名空間下的方法,因此需要通過(guò)pd.concat()的方式來(lái)引用。

語(yǔ)法:pd.concat(‘objs’, ‘a(chǎn)xis=0’, “join=‘outer’”, ‘join_axes=None’, ‘ignore_index=False’, ‘keys=None’, ‘levels=None’, ‘names=None’, ‘verify_integrity=False’, ‘sort=None’, ‘copy=True’)

常用參數(shù):

  • objs:要進(jìn)行拼接的pandas對(duì)象,可用中括號(hào)[]將兩個(gè)或多個(gè)對(duì)象括起來(lái)
  • axis:指定對(duì)象按照那個(gè)軸進(jìn)行拼接,默認(rèn)為0(縱向拼接),1為橫向橫向拼接
  • join:拼接的方式,inner為交集,outer為并集
  • join_axes:index的列表,僅在橫向合并時(shí)使用,指明要將數(shù)據(jù)合并入哪個(gè)原表的index。
  • ignore_index:默認(rèn)為False,如果設(shè)置為true,則無(wú)視表原來(lái)的軸標(biāo)簽,直接合并,合并后生成新的軸標(biāo)簽。
  • keys:表標(biāo)識(shí)的列表,用來(lái)區(qū)分合并的表來(lái)自哪里。

下面,將對(duì)concat方法以上各個(gè)參數(shù)進(jìn)行詳細(xì)說(shuō)明:

第一個(gè)要學(xué)習(xí)的參數(shù)為objs:要進(jìn)行拼接的pandas對(duì)象,可用中括號(hào)[]將兩個(gè)或多個(gè)對(duì)象括起來(lái)。

1)對(duì)series進(jìn)行拼接

<<< ser1=pd.Series(np.arange(9))
<<< ser2=pd.Series(np.arange(9))
# 對(duì)兩個(gè)series對(duì)象進(jìn)行拼接
<<< pd.concat([ser1,ser2])
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
dtype: int32
  1. 對(duì)DataFrame進(jìn)行拼接
<<< df1=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['A','B','C'],index=['a','b','c'])
<<< df2=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['D','E','F'],index=['e','f','g'])
# 對(duì)兩個(gè)DataFrame對(duì)象進(jìn)行拼接
<<< pd.concat([df1,df2])
    A   B	C	D	E   F
a	0	1	2	NaN	NaN	NaN
b	3	4	5	NaN	NaN	NaN
c	6	7	8	NaN	NaN	NaN
e	NaN	NaN	NaN	0	1	2
f	NaN	NaN	NaN	3	4	5
g	NaN	NaN	NaN	6	7	8

第二個(gè)要學(xué)習(xí)的參數(shù)為axis:指定對(duì)象按照那個(gè)軸進(jìn)行拼接,默認(rèn)為0(縱向拼接),1為橫向橫向拼接。

<<< df1=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['A','B','C'],index=['a','b','c'])
<<< df2=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['D','E','F'],index=['a','b','d'])
# 將數(shù)據(jù)對(duì)象df1和df2沿1軸進(jìn)行拼接,即進(jìn)行橫向拼接
<<< pd.concat([df1,df2],axis=1)
    A	B	C	D	E	F
a	0	1	2	0	1	2
b	3	4	5	3	4	5
c	6	7	8	NaN	NaN	NaN
d	NaN	NaN	NaN	6	7	8

注意:當(dāng)對(duì)Series進(jìn)行拼接時(shí),設(shè)置axis=0進(jìn)行縱向拼接的結(jié)果對(duì)象為Series,設(shè)置axis=1進(jìn)行橫向拼接的結(jié)果對(duì)象為DataFrame

<<< ser1=pd.Series(np.arange(9))
<<< ser2=pd.Series(np.arange(9))
# 對(duì)Series進(jìn)行拼接縱向拼接,結(jié)果認(rèn)為Series對(duì)象
<<< a=pd.concat([ser1,ser2],axis=0)
<<< type(a)
pandas.core.series.Series
# 對(duì)Series進(jìn)行拼接橫向拼接,結(jié)果轉(zhuǎn)換為DataFrame對(duì)象
<<< b=pd.concat([ser1,ser2],axis=1)
<<< type(b)
pandas.core.frame.DataFrame

第三個(gè)要學(xué)習(xí)的參數(shù)為join:拼接的方式,inner為交集,outer為并集,橫向拼接時(shí)由index的交/并集決定,縱向拼接時(shí)由columns的交/并集決定,同時(shí),如果join=outer,匹配不上的地方以nan填充。

<<< df1=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['A','B','C'],index=['a','b','c'])
<<< df2=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['D','E','F'],index=['a','b','d'])
# 將df1和df2進(jìn)行橫向合并,取二者的并集
<<< pd.concat([df1,df2],axis=1)
    A	B	C	D	E	F
a	0	1	2	0	1	2
b	3	4	5	3	4	5
c	6	7	8	NaN	NaN	NaN
d	NaN	NaN	NaN	6	7	8
# 將df1和df2進(jìn)行橫向合并,只取二者的交集
<<< pd.concat([df1,df2],axis=1,join='inner')
    A	B	C	D	E	F
a	0	1	2	0	1	2
b	3	4	5	3	4	5

第四個(gè)要學(xué)習(xí)的參數(shù)為join_axes:以哪個(gè)數(shù)據(jù)對(duì)象的index/columns作為軸進(jìn)行拼接,當(dāng)進(jìn)行橫向拼接時(shí),join_axes為index的列表,如需根據(jù)df1對(duì)齊數(shù)據(jù),則會(huì)保留df1的index,再將df2的數(shù)據(jù)進(jìn)行拼接;同理,縱向拼接時(shí)為columns的列表。

<<< df1=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['A','B','C'],index=['a','b','c'])
<<< df2=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['D','E','F'],index=['a','b','d'])
# 根據(jù)df1的index對(duì)齊數(shù)據(jù)
<<< pd.concat([df1,df2],axis=1,join_axes=[df1.index])
    A	B	C	D	E	F
a	0	1	2	0	1	2
b	3	4	5	3	4	5
c	6	7	8	NaN	NaN	NaN
# 根據(jù)df2的index對(duì)齊數(shù)據(jù)
<<< pd.concat([df1,df2],axis=1,join_axes=[df2.index])
    A	B	C	D	E	F
a	0	1	2	0	1	2
b	3	4	5	3	4	5
d	NaN	NaN	NaN	6	7	8

第五個(gè)要學(xué)習(xí)的參數(shù)為ignore_index:默認(rèn)為False,如果設(shè)置為true,則無(wú)視表原來(lái)的軸標(biāo)簽,直接合并,合并后生成新的軸標(biāo)簽。

這里需要注意的是,與append方法只能進(jìn)行縱向拼接不同,concat方法既可以進(jìn)行橫向拼接,也可以進(jìn)行縱向拼接,若設(shè)置ignore_index=True,當(dāng)進(jìn)行橫向拼接時(shí),則無(wú)視原表的columns,直接合并,合并后生成默認(rèn)的columns;同理,當(dāng)進(jìn)行縱向拼接時(shí),則是忽略原表的index,生成新的index。

<<< df1=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['A','B','C'],index=['a','b','c'])
<<< df2=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['D','E','F'],index=['a','b','d'])
# 橫向拼接時(shí),忽略的是columns,index仍起作用
<<< pd.concat([df1,df2],axis=1,ignore_index=True)
    0	1	2	3	4	5
a	0	1	2	0	1	2
b	3	4	5	3	4	5
c	6	7	8	NaN	NaN	NaN
d	NaN	NaN	NaN	6	7	8
# 縱向拼接時(shí),忽略的是index,columns仍起作用
pd.concat([df1,df2],axis=0,ignore_index=True)
    0	1	2	3	4	5
a	0	1	2	0	1	2
b	3	4	5	3	4	5
c	6	7	8	NaN	NaN	NaN
d	NaN	NaN	NaN	6	7	8

第六個(gè)要學(xué)習(xí)的參數(shù)為keys:表標(biāo)識(shí)的列表,用來(lái)區(qū)分合并后的數(shù)據(jù)來(lái)源于哪個(gè)表,當(dāng)ignore_index=True時(shí),此參數(shù)的作用失效。

<<< df1=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['A','B','C'],index=['a','b','c'])
<<< df2=pd.DataFrame(np.arange(9).reshape(3,3),columns=   <<< ['D','E','F'],index=['a','b','d'])
# 設(shè)置ignore_index=True時(shí),參數(shù)keys不起作用
<<< pd.concat([df1,df2],axis=1,ignore_index=True,keys=    <<< ['df1','df2'])
    0	1	2	3	4	5
a	0	1	2	0	1	2
b	3	4	5	3	4	5
c	6	7	8	NaN	NaN	NaN
d	NaN	NaN	NaN	6	7	8
# 設(shè)置ignore_index=False,會(huì)根據(jù)keys的列表標(biāo)識(shí)結(jié)果中的數(shù)據(jù)來(lái)源
<<< pd.concat([df1,df2],axis=1,ignore_index=False,keys=   <<< ['df1','df2'])
    df1	        df2
    A	B	C	D	E	F
a	0	1	2	0	1	2
b	3	4	5	3	4	5
c	6	7	8	NaN	NaN	NaN
d	NaN	NaN	NaN	6	7	8

總結(jié):

  • append方法只能進(jìn)行橫向拼接,且只支持對(duì)兩個(gè)對(duì)象進(jìn)行拼接操作,但append支持單個(gè)對(duì)象的連接,此方法常用于循環(huán)中;
  • concat方法可用于橫向或縱向的拼接,同時(shí)可以設(shè)置以并集或交集的方式拼接

如對(duì)append和concat方法還感興趣,建議可前往查看官方文檔:

1)https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html?highlight=append#pandas.DataFrame.append

2)pandas.concat - pandas 0.21.0 documentation

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }