簡體   English   中英

pandas:用另一個字符串替換字符串

[英]pandas: replace string with another string

我有以下數據框

    prod_type
0   responsive
1   responsive
2   respon
3   r
4   respon
5   r
6   responsive

我想用responsive替換responr ,所以最終的數據框是

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM