나는 그러한 DataFrame을 가지고있다 :
df = pd.DataFrame(data={
'col0': [11, 22,1, 5]
'col1': ['aa:a:aaa', 'a:a', 'a', 'a:aa:a:aaa'],
'col2': ["foo", "foo", "foobar", "bar"],
'col3': [True, False, True, False],
'col4': ['elo', 'foo', 'bar', 'dupa']})
col1에서 ":"로 분할 한 후 목록의 길이를 얻고 싶습니다. 길이가 2보다 크면 값을 덮어 쓰거나 길이가 2보다 작 으면 값을 덮어 쓰지 않습니다.
이상적으로는 가능한 한 빠른 속도로 한 줄에 있어야합니다.
현재 시도하지만 ValueError를 반환합니다.
df[['col1', 'col2', 'col3']] = df.loc[df['col1'].str.split(":").apply(len) > 2], ("", "", False), df[['col1', 'col2', 'col3']])
편집 : col1의 조건. EDIT2 : 훌륭하고 신속하게 제공된 모든 답변에 감사드립니다. 놀랄 만한! EDIT3 : 10 ^ 6 행의 타이밍 :
@ansev 3.2657s
@jezrael 0.8922s
@ anky_91 1.9511s
실수로 사과드립니다. col1입니다.
—
dkrynicki
col2
또는col1
?