Pandas方法链接pd.to_detime()到.assign()



我正在尝试通过.assign((的方法链pd.to_detime((,但没有成功

这项工作:

tcap2 = tcap.
        assign(person = tcap['text'].apply(lambda x: x.split(" ", 1)[0]),
               date_time = tcap['text'].str.extract(r'(([^()]+))'),
               text = tcap['text'].str.split(': ').str[1])
tcap2['date_time'] = pd.to_datetime(tcap2['date_time'])

但我希望把整个区块放在同一个链上,就像这样:

tcap2 = tcap.
        assign(person = tcap['text'].apply(lambda x: x.split(" ", 1)[0]),
               date_time = tcap['text'].str.extract(r'(([^()]+))'),
               text = tcap['text'].str.split(': ').str[1]).
        assign(date_time = lambda df: pd.to_datetime(tcap['date_time']))

我将感谢的任何建议

另请注意,为了避免使用"\"并使这样的链接更可读,可以用括号括起表达式:

tcap = (tcap
        .assign(person=tcap['text'].apply(lambda x: x.split(" ", 1)[0]),
                date_time=tcap['text'].str.extract(r'(([^()]+))'),
                text=tcap['text'].str.split(': ').str[1])
        .assign(date_time = lambda tcap: pd.to_datetime(tcap['date_time']))
        )

谢谢你,尼皮,你太棒了,只是我的lambda函数(facepalm(有一点变化这绝对是一种享受,只会使代码更加紧凑和可读

tcap = tcap.
        assign(person = tcap['text'].apply(lambda x: x.split(" ", 1)[0]),
               date_time = tcap['text'].str.extract(r'(([^()]+))'),
               text = tcap['text'].str.split(': ').str[1]).
        assign(date_time = lambda tcap: pd.to_datetime(tcap['date_time']))

最新更新