[英]pandas: replace string with another string
我有以下數據框
prod_type
0 responsive
1 responsive
2 respon
3 r
4 respon
5 r
6 responsive
我想用responsive
替換respon
和r
,所以最終的數據框是
prod_type
0 responsive
1 responsive
2 responsive
3 responsive
4 responsive
5 responsive
6 responsive
我嘗試了以下但沒有奏效:
df['prod_type'] = df['prod_type'].replace({'respon' : 'responsvie'}, regex=True)
df['prod_type'] = df['prod_type'].replace({'r' : 'responsive'}, regex=True)
用dictionary
replace
的解決方案:
df['prod_type'] = df['prod_type'].replace({'respon':'responsive', 'r':'responsive'})
print (df)
prod_type
0 responsive
1 responsive
2 responsive
3 responsive
4 responsive
5 responsive
6 responsive
如果需要將列中的所有值設置為某個string
:
df['prod_type'] = 'responsive'
您不需要在此處傳遞regex=True
,因為這將查找部分匹配,因為您在精確匹配之后只需將參數作為單獨的參數傳遞:
In [7]:
df['prod_type'] = df['prod_type'].replace('respon' ,'responsvie')
df['prod_type'] = df['prod_type'].replace('r', 'responsive')
df
Out[7]:
prod_type
0 responsive
1 responsive
2 responsvie
3 responsive
4 responsvie
5 responsive
6 responsive
其他解決方案,以防df['prod_type']
所有項目都相同:
df['prod_type'] = ['responsive' for item in df['prod_type']]
In[0]: df
Out[0]:
prod_type
0 responsive
1 responsive
2 responsive
3 responsive
4 responsive
5 responsive
6 responsive
或者,您可以使用帶有 lambda 語法的 apply 函數
df['prod_type'] = df['prod_type'].apply(lambda x: x.replace('respon', 'responsvie'))
按照 jezrael 的回答,您可以設置 inplace
inplace=True<\/code>來更改數據框:
df = pd.DataFrame(
{'prod_type':['responsive','responsive','respon','r','respon','r','responsive']},
columns=['prod_type'])
df.replace({'prod_type': {'respon': 'responsive', 'r': 'responsive'}}, inplace=True)
df
prod_type
0 responsive
1 responsive
2 responsive
3 responsive
4 responsive
5 responsive
6 responsive
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.