通过pd.to.assign()链接www.example.com _datetime()的Pandas方法

6ovsh4lw  于 2023-02-11  发布在  其他
关注(0)|答案(2)|浏览(112)

我尝试通过. assign()连接方法链www.example.com_datetime(),但没有成功pd.to_datetime() through .assign()
这是可行的:

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']))

我将非常感谢任何建议

utugiqy6

utugiqy61#

谢谢你Nipy你是真棒,只是在我的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']))
enxuqcxy

enxuqcxy2#

另外,为了避免使用'',并使这样的链接更具可读性,可以用括号将表达式括起来:

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']))
        )

相关问题