擅长:python、mysql、java
<p>我不知道它是否更有效,但你可以用apply</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
import datetime
mre_df = pd.DataFrame(
{
"dates": ["2021-05-01", "2021-05-02", "2021-05-03", "2021-05-04"],
"click": [3, 2, 3, 4],
"imps": [123, 122, 444, 443],
}
)
mre_df["dates"] = pd.to_datetime(mre_df["dates"], format="%Y-%m-%d")
mre_df.set_index("dates", inplace=True)
mre_df["ctr"] = mre_df["click"] / mre_df["imps"]
# create rel_ctr columb
mre_df["rel_ctr"] = mre_df.apply(
lambda rw: rw["ctr"] * 1.2
if rw.name >= datetime.datetime.strptime("2021-05-03", "%Y-%m-%d")
else rw["ctr"],
axis=1,
)
print(mre_df)
""" Sample Output
click imps ctr rel_ctr
dates
2021-05-01 3 123 0.024390 0.024390
2021-05-02 2 122 0.016393 0.016393
2021-05-03 3 444 0.006757 0.008108
2021-05-04 4 443 0.009029 0.010835
"""
</code></pre>