두 개의 시리즈가 있고 둘 다 값이 있는지 확인하고 싶습니다. 그래서 값 사이에 쉼표를 넣을 수 있습니다. 이렇게하면 최종 결과가 더 체계적으로 보입니다. 지금 두 시리즈를 Dataframe의 한 열로 병합하면 지저분 해 보입니다.
이것이 내가하는 방법입니다.
series1 = df_grouped['mismatchMom'].apply(lambda g: g.any() + ' with mother' if g.any() else None)
series2 = df_grouped['mismatchDad'].apply(lambda g: g.any() + ' with father' if g.any() else None)
df_individual['mismatch'] = series1 + ', ' + series2
작동하지만 series1에 값이 없거나 series2에 값이 없거나 둘 다 값이 없을 때마다 쉼표가 정말 이상해 보입니다.
나는 다음과 같은 것을 시도했다.
df_individual['mismatch'] = series1 + ', ' + series2 \
if series1.bool() & series2.bool() else \
series1 + series2
(I는 교체 시도 bool()
에 isnull()
뿐만 아니라)하지만 난 오류
ValueError : Series의 진실 값이 모호합니다. a.empty, a.bool (), a.item (), a.any () 또는 a.all ()을 사용하십시오.
감사!
원한다면 이것을 사용할 수 있습니다 : (s1과 s2의 크기가 같은 경우)
df['mismatch'] = pd.concat([s1,s2],axis = 1).apply(lambda x: ', '.join(x) if not x.all() == '' else x.sum(),axis=1)
나는 None
if 문이 이렇게 간단하기 때문에 변경을 요청 했습니다.
아이디어는 것입니다 CONCAT 열을 기준으로이 시리즈를 더가있는 경우 단순히 행에 가입하지 empty strings
. 있는 경우 행 요소를 더합니다.
이렇게하면 다음과 같은 출력을 얻을 수 있습니다.
A B mismatch
0 stuff more aa, aa
1 stuff more bb
2 stuff more cc
3 stuff more
4 stuff more ee, ee
이상하지 않고 ,
.
도움이 되었기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다