字符串的替换 replace 函数 语法:
string.replace(old,new,count)
string:要替换的字符串
old: (必选,字符串类型)被替换的字符串
new: (必选,字符串类型)替换后的字符串
count: (可选,整型)替换的次数
str.replace(string,old,new,count)
old: (必选,字符串类型)被替换的字符串
new: (必选,字符串类型)替换后的字符串
count: (可选,整型)替换的次数
1 2 3 4 5 6 7 8 9 10 11 a = '2023-11-10' a.replace('-' ,'' ) a.replace('-' ,'' ,1 ) a.replace('-' ,'' ,-1 )
'20231110'
'202311-10'
'20231110'
1 2 3 4 5 6 7 8 9 10 str .replace(a,'-' ,'' )a b ='I Love python' b.replace('python' ,'C++' ).replace('I' ,'You' )
'20231110'
'2023-11-10'
'You Love C++'
1 2 3 4 5 6 7 8 9 10 11 lst = [i for i in 'ABC' ] lst [i.replace('A' ,'a' ) for i in lst] dct ={k:v for v,k in enumerate (lst)} dct {k.replace('A' ,'aa' ):str (v).replace('1' ,'100' ) for k,v in dct.items()}
['A', 'B', 'C']
['a', 'B', 'C']
{'A': 0, 'B': 1, 'C': 2}
{'aa': '0', 'B': '100', 'C': '2'}
字符串的替换 re.sub 语法:re.sub(pattern, repl, string, count=0, flags=0)
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
1 2 3 4 5 6 7 8 9 10 11 12 13 a = 'address:123;number:456;date:789' re.sub(r':' ,' = ' ,a) repl = lambda x: '****' if x.group() == '123' else ('不允许公开的号码' if x.group() == '456' else '???' ) re.sub(r'\d+' ,repl,a) repl = lambda x: str (int (x.group()) + 100 ) re.sub(r'\d+' ,repl,a)
'address = 123;number = 456;date = 789'
'address:****;number:不允许公开的号码;date:???'
'address:223;number:556;date:889'
1 2 3 4 5 6 7 8 9 10 11 file = r"C:\Users\xiaoyx\Desktop\231110\近三天均多头\231110_list.txt" with open (file) as f1, open (f'{file} .bak' ,'w' ,encoding='utf-8' ) as f2: for line in f1: f2.write(re.sub(r'\D+' ,'' ,line)) os.remove(file) os.rename(f'{file} .bak' ,file) f1.close() f2.close()
54
DataFrme 的值替换
replace
df.replace(old,new)
df.replace({old:new,old,new})
map
Series.map(arg,na_action =None)
arg : 映射一个 Series。它可以是一个集合或一个函数
na_action:处理 NaN(非数字)值。它可以取两个值-None 或 ignore。None 是默认值,map() 将把映射应用于所有值,包括 Nan 值;ignore 将 NaN 值留在列中,而不传递给映射方法。
applymap
语法:DataFrame.applymap(func, na_action=None, **kwargs)
func : 传入的函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 file = 'ddd.csv' df = pd.read_csv(file, nrows=2 , parse_dates=['date' ], index_col='date' , ) df df.replace(0 ,'' ).replace(1 ,'建仓' ) df.replace([0 ,1 ],333 ) df.replace({0 :'' ,1 :'建仓' })
open
high
low
close
volume
turn
ma05
ma10
ma20
bs
date
2020-02-21
3.180605
3.180605
3.143274
3.158207
9718154
0.9316
3.134315
3.099970
3.123489
0
2020-06-18
3.499128
3.518568
3.450529
3.518568
10729909
0.5944
3.464137
3.463165
3.464623
1
open
high
low
close
volume
turn
ma05
ma10
ma20
bs
date
2020-02-21
3.180605
3.180605
3.143274
3.158207
9718154
0.9316
3.134315
3.099970
3.123489
2020-06-18
3.499128
3.518568
3.450529
3.518568
10729909
0.5944
3.464137
3.463165
3.464623
建仓
open
high
low
close
volume
turn
ma05
ma10
ma20
bs
date
2020-02-21
3.180605
3.180605
3.143274
3.158207
9718154
0.9316
3.134315
3.099970
3.123489
333
2020-06-18
3.499128
3.518568
3.450529
3.518568
10729909
0.5944
3.464137
3.463165
3.464623
333
open
high
low
close
volume
turn
ma05
ma10
ma20
bs
date
2020-02-21
3.180605
3.180605
3.143274
3.158207
9718154
0.9316
3.134315
3.099970
3.123489
2020-06-18
3.499128
3.518568
3.450529
3.518568
10729909
0.5944
3.464137
3.463165
3.464623
建仓
1 2 3 4 5 6 7 8 df = pd.read_csv(file, nrows=2 , parse_dates=['date' ], index_col='date' , ) df['open' ] = df['open' ].map (lambda x :f'{x :.2 f} ' ,na_action=None ) df
open
high
low
close
volume
turn
ma05
ma10
ma20
bs
date
2020-02-21
3.18
3.180605
3.143274
3.158207
9718154
0.9316
3.134315
3.099970
3.123489
0
2020-06-18
3.50
3.518568
3.450529
3.518568
10729909
0.5944
3.464137
3.463165
3.464623
1
1 2 3 4 5 6 7 8 9 10 df = pd.read_csv(file, nrows=2 , parse_dates=['date' ], index_col='date' , ) df df.applymap(lambda x :f'{x:.2 f} ' ,na_action=None ) df.applymap(lambda x :f'{x:.2 f} ' ,na_action='ignore' ) df.applymap(lambda x :round (x,2 ))
open
high
low
close
volume
turn
ma05
ma10
ma20
bs
date
2020-02-21
3.180605
3.180605
3.143274
3.158207
9718154
0.9316
3.134315
3.099970
3.123489
0
2020-06-18
3.499128
3.518568
3.450529
3.518568
10729909
0.5944
3.464137
3.463165
3.464623
1
open
high
low
close
volume
turn
ma05
ma10
ma20
bs
date
2020-02-21
3.18
3.18
3.14
3.16
9718154.00
0.93
3.13
3.10
3.12
0.00
2020-06-18
3.50
3.52
3.45
3.52
10729909.00
0.59
3.46
3.46
3.46
1.00
open
high
low
close
volume
turn
ma05
ma10
ma20
bs
date
2020-02-21
3.18
3.18
3.14
3.16
9718154.00
0.93
3.13
3.10
3.12
0.00
2020-06-18
3.50
3.52
3.45
3.52
10729909.00
0.59
3.46
3.46
3.46
1.00
open
high
low
close
volume
turn
ma05
ma10
ma20
bs
date
2020-02-21
3.18
3.18
3.14
3.16
9718154
0.93
3.13
3.10
3.12
0
2020-06-18
3.50
3.52
3.45
3.52
10729909
0.59
3.46
3.46
3.46
1
loc方法替换列的值 语法:DataFrame.loc[condition, column_label] = new_value
condition:这个参数返回使条件为真的值。
column_label:该参数用于指定要更新的目标列。 通过参数确定值后,我们将其更新为 new_value。
1 2 3 4 5 6 7 8 9 10 df = pd.read_csv(file, nrows=2 , parse_dates=['date' ], index_col='date' , ) df.loc[df.open > df.close,'bs' ] = '收阴线' df.loc[df.volume > 10000000 , 'bs' ] = '大成交量' df
open
high
low
close
volume
turn
ma05
ma10
ma20
bs
date
2020-02-21
3.180605
3.180605
3.143274
3.158207
9718154
0.9316
3.134315
3.099970
3.123489
收阴线
2020-06-18
3.499128
3.518568
3.450529
3.518568
10729909
0.5944
3.464137
3.463165
3.464623
大成交量