3
熊猫根据一列中的值条件一次覆盖多列中的值
我有这样的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 …