回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>好的,这是一个很难描述的问题</p>
<p>我正在为一项研究准备一份合规性报告,团队需要知道每个用户是否在8天中的7天内每月至少执行一次特定任务</p>
<p>因此,我需要一种方法:</p>
<ol>
<li>对于给定用户和给定月份,在该月份搜索8天期间,其中至少有7天标记为“真”</li>
<li>如果满足要求,则返回1;如果不满足要求,则返回0</李>
</ol>
<p>以下是数据结构的一个示例:</p>
<pre><code>import pandas as pd
ids = 1
req_met = ['TRUE', 'TRUE', 'FALSE', 'FALSE', 'TRUE', 'TRUE', 'TRUE', 'FALSE', 'TRUE', 'TRUE', 'TRUE', 'TRUE', 'FALSE', 'FALSE', 'FALSE', 'FALSE', 'TRUE', 'TRUE', 'TRUE', 'FALSE']
date = ['2018-01-01', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08', '2018-01-09', '2018-01-10', '2018-01-11',
'2018-01-12', '2018-01-13', '2018-01-14', '2018-01-15', '2018-01-16', '2018-01-17', '2018-01-18', '2018-01-19', '2018-01-21', '2018-01-23']
df = pd.DataFrame({'id':ids,
'Date':date,
'req_met':req_met})
print(df)
id Date req_met
0 1 2018-01-01 TRUE
1 1 2018-01-03 TRUE
2 1 2018-01-04 FALSE
3 1 2018-01-05 FALSE
4 1 2018-01-06 TRUE
5 1 2018-01-07 TRUE
6 1 2018-01-08 TRUE
7 1 2018-01-09 FALSE
8 1 2018-01-10 TRUE
9 1 2018-01-11 TRUE
10 1 2018-01-12 TRUE
11 1 2018-01-13 TRUE
12 1 2018-01-14 FALSE
13 1 2018-01-15 FALSE
14 1 2018-01-16 FALSE
15 1 2018-01-17 FALSE
16 1 2018-01-18 TRUE
17 1 2018-01-19 TRUE
18 1 2018-01-21 TRUE
19 1 2018-01-23 FALSE
</code></pre>
<p>对于该用户,返回的答案为“1”,因为他们有8天的期限,其中7天为“真”(2018-01-06至2018-01-13)。您可以看到,日期范围并不总是连续的,这增加了复杂性</p>
<p>我期望的输出将是最有效的函数,它可以获取此数据并返回“1”(满足要求)或“0”(未满足要求)</p>
<p>提前感谢您的帮助</p>