[英]Replace values with different condition in multiple columns in Pandas
我有一個類似這樣的數據框,但更大:
source next1 next2 next3
b1 {-} b2 -,b2,b3
b2,b3 - {b2,b3} {b2,b3,b4}
現在我需要在這里替換很多字符。 每下一列應包含上一列的值。 如果值是-或{-}表示前一個,如果不是,則也需要前一個。 所需的輸出:
source next1 next2 next3
b1 b1 b2 b1,b2,b3
b2,b3 b2,b3 b2,bb3 b2,b3,b4
我已經嘗試過這樣的事情:
for val in df['source'].values:
if values=b1:
df['next1'].replace('{-},', 'b1,',regex=True, inplace=True)
df['next1'].replace('-,', 'b1,',regex=True, inplace=True)
等等但是我有那么多行和條件,所以這行得很久,而且不夠精確,有錯誤。 將一個值(替換后)放入所有行。
我不認為您的問題有快速的解決方案,因為字符串操作總是很慢。 不過,有一個更好/更快的方法。
一個簡單的解決方案是
for i in range(1, df.shape(1)): # here only order matters
df.iloc[:, i].str.replace('{-}', '-', inplace=True)
mask = df.iloc[:, i].str.contains('-')
df.iloc[mask, i].str.replace('{-}', df.iloc[mask, i-1], inplace=True)
這樣,將所有列設置為集合({})並對其進行操作可能會更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.