【发布时间】:2020-05-06 14:28:55
【问题描述】:
我有这样的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 的值,或者不覆盖长度
理想情况下,尽可能快地排成一行。
目前,我尝试但它返回 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
【问题讨论】:
-
条件是
col2还是col1? -
我为这个错误道歉。它是 col1。