데이터 프레임이 있고 MaxP에 +/-가있는 경우에만 MinP의 값을 MaxP의 값으로 바꾸고 싶습니다. [그런 다음 +/-를 제거하고 숫자로 변환합니다]
내 코드는 작동하지만 Maxp에 +/-가 없을 때 MinP에 0을 넣습니다. 대신 MinP의 값을 유지하고 싶습니다.
import pandas as pd
df = pd.DataFrame({
'MinP':['0','','-10','',],
'MaxP':['20','15','12','+/-20']})
print(df)
df['MinP'] = df['MaxP'].apply(lambda x: df['MaxP'] if '+/-' in x else df['MinP'])
print(df)
MinP MaxP
0 0 20
1 15
2 -10 12
3 +/-20
MinP MaxP
0 0 20
1 0 15
2 0 12
3 20 +/-20
나는 또한 놀았다 : df.loc [df [ 'MinP']] = np.where (df.MaxP.str.contains ( "+/-"), df [ 'MaxP'], df.MinP) 아무데도 가지마.
다른 아이디어가 있습니까?
str.contains + numpy.where를 사용할 수 있습니다 .
df['MinP'] = np.where(df.MaxP.str.contains('+/-', regex=False), df.MaxP, df.MinP)
print(df)
산출
MinP MaxP
0 0 20
1 15
2 -10 12
3 +/-20 +/-20
regex=False
패턴이 정규식으로 해석되지 않도록 하려면을 사용해야 합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다