擅长:python、mysql、java
<p>使用<code>getattr</code>返回特定属性:</p>
<pre><code>def test(df, timepart):
return getattr(df['hit'].dt, timepart)
</code></pre>
<p/>
<pre><code>test(df, 'month')
0 12
1 3
Name: hit, dtype: int64
</code></pre>
<p><code>strftime</code>的问题是它在返回结果之前将结果转换为字符串</p>
<hr/>
<p>如果你想尝尝<a href="https://stackoverflow.com/questions/53779986/dynamic-expression-evaluation-in-pandas-using-pd-eval">dynamic life</a>,试试<code>DataFrame.eval</code></p>
<pre><code>def test(df, timepart):
return df.eval(f"hit.dt.{timepart}", engine='python')
test(df, 'month')
0 12
1 3
Name: hit, dtype: int64
</code></pre>
<p>python的<code>eval</code>是危险的,谢天谢地,有更安全的替代方法来做同样的事情</p>