가변 길이 목록으로 구성된 Pandas 데이터 프레임에 열이 있으며 목록 길이에 따라 조건부 요소를 추출하는 효율적인 방법을 찾으려고합니다. 이 최소한의 재현 가능한 예를 고려하십시오.
t = pd.DataFrame({'a':[['1234','abc','444'],
['5678'],
['2468','def']]})
두 번째 요소 (관련있는 경우)를 새 열로 추출하고 그렇지 않으면 NaN을 사용하고 싶다고 가정 해 보겠습니다. 매우 비효율적 인 방법으로 얻을 수있었습니다.
_ = []
for index,row in t.iterrows():
if (len(row['a']) > 1):
_.append(row['a'][1])
else:
_.append(np.nan)
t['element_two'] = _
그리고을 사용하여 시도 np.where()
했지만 'if'인수를 올바르게 지정하지 않았습니다.
np.where(t['a'].str.len() > 1, lambda x: x['a'][1], np.nan)
다른 솔루션에 대한 수정 및 팁은 크게 감사하겠습니다! 저는 벡터화를 당연하게 여기는 R에서 왔습니다.
저는 pandas 0.25.3과 numpy 1.18.1에 있습니다.
str
accesor 사용 :
n = 2
t['second'] = t['a'].str[n-1]
print(t)
a second
0 [1234, abc, 444] abc
1 [5678] NaN
2 [2468, def] def
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다