ฉันมี 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 แล้วฉันต้องการเขียนทับค่าถ้า length> 2 หรือไม่เขียนทับค่าถ้า length <= 2
จะเป็นการดีในหนึ่งบรรทัดที่รวดเร็วที่สุด
ขณะนี้ฉันลองแล้ว แต่จะส่งคืน ValueError
df[['col1', 'col2', 'col3']] = df.loc[df['col1'].str.split(":").apply(len) > 2], ("", "", False), df[['col1', 'col2', 'col3']])
แก้ไข: เงื่อนไขใน col1 แก้ไข 2: ขอบคุณสำหรับคำตอบที่ยอดเยี่ยมและให้อย่างรวดเร็วทั้งหมด ! ที่น่าตื่นตาตื่นใจ EDIT3: เวลาใน 10 ^ 6 แถว:
@ansev 3.2657 วินาที
@jezrael 0.8922 วินาที
@ anky_91 1.9511 วินาที
ฉันขอโทษสำหรับความผิดพลาด มันคือ col1
—
dkrynicki
col2
หรือcol1
ไม่?