Tôi có DataFrame như vậy:
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']})
Tôi muốn lấy độ dài của danh sách sau khi tách trên ":" trong col1, sau đó tôi muốn ghi đè lên các giá trị nếu độ dài> 2 HOẶC không ghi đè lên các giá trị nếu độ dài <= 2.
Lý tưởng nhất, trong một dòng càng nhanh càng tốt.
Hiện tại, tôi đã thử nhưng nó trả về ValueError.
df[['col1', 'col2', 'col3']] = df.loc[df['col1'].str.split(":").apply(len) > 2], ("", "", False), df[['col1', 'col2', 'col3']])
EDIT: điều kiện trên col1. EDIT2: cảm ơn bạn vì tất cả các câu trả lời tuyệt vời và nhanh chóng được cung cấp. kinh ngạc! EDIT3: thời gian trên 10 ^ 6 hàng:
@ansev 3.2657s
@jezrael 0.8922s
@ anky_91 1.9511
col2
haycol1
?