Skip to main content
 首页 » 编程设计

python之从 Python 函数调用 `dt.` 类型

2025年05月04日14xing901022

我在 pandas 中有时间戳,我希望能够编写一个函数来返回日期的不同部分。这是一个 MWE:

import pandas as pd 
df = pd.DataFrame({'hit': pd.to_datetime(['2018-12-29 00:00:00', '2019-03-25 00:00:00'])}) 
 

这就是我希望能够做到的:

def test(timepart): 
    df['hit'].dt.timepart 

所以我可以调用 test(month),该函数将返回 12, 03。

请您参考如下方法:

使用 getattr 返回特定属性:

def test(df, timepart): 
    return getattr(df['hit'].dt, timepart) 

test(df, 'month') 
0    12 
1     3 
Name: hit, dtype: int64 

strftime 的问题在于它在返回之前将结果转换为字符串。


如果你想尝尝dynamic life ,请尝试使用 DataFrame.eval。

def test(df, timepart): 
    return df.eval(f"hit.dt.{timepart}", engine='python') 
 
test(df, 'month') 
 
0    12 
1     3 
Name: hit, dtype: int64 

python 的 eval 很危险,谢天谢地有更安全的替代方法来做同样的事情。