2024-10-02 18:13:58 发布
网友
我有一个关于np的问题
我有这样的想法:
import pandas as pd import numpy as np a = [{'a1':'Marco 1'}, {'a1':'2'}, {'a1':'Marco 3'}] df = pd.DataFrame(a) df['a1'] = np.where(df['a1'].str.contains('Marco'), 'Marco', df['a1'])
我想知道如何改变a1==2中的值,对于像'Marco2'这样的字符串
通过np.where()尝试:
np.where()
df['a1']=np.where(df['a1'].str.isnumeric(),'Marco '+df['a1'],df['a1'])
或
通过带loc访问器的布尔屏蔽:
df.loc[df['a1'].str.isnumeric(),'a1']='Macro '+df.loc[df['a1'].str.isnumeric(),'a1']
注意:您也可以使用str.isdigit()方法代替str.isnumeric()方法
str.isdigit()
str.isnumeric()
你可以试试str.split
str.split
df['a1'] = 'Marco ' + df['a1'].str.split(r'Marco').str[-1] df['a1'] # 0 Marco 1 # 1 Marco 2 # 2 Marco 3 # Name: a1, dtype: object
或str.replace
str.replace
df['a1'] = df['a1'].str.replace(r'(Marco)*\s*(\d+)', r'Marco \2') df['a1'] # 0 Marco 1 # 1 Marco 2 # 2 Marco 3 # Name: a1, dtype: object
通过
np.where()
尝试:或
通过带loc访问器的布尔屏蔽:
注意:您也可以使用
str.isdigit()
方法代替str.isnumeric()
方法你可以试试
str.split
或
str.replace
相关问题 更多 >
编程相关推荐