擅长:python、mysql、java
<pre><code>import pandas as pd
csv = pd.read_csv(
'sample.csv',
parse_dates=['Date']
)
csv.sort_values('Date', inplace=True)
def find_closest(row):
target = row['Target1']
date = row['Date']
matches = csv[
(csv['Close'] >= target) &
(csv['Date'] > date)
]
closest_date = matches['Date'].iloc[0] if not matches.empty else None
row['days to hit target'] = (closest_date - date).days if closest_date else None
return row
final = csv.apply(find_closest, axis=1)
</code></pre>
<p>测试起来有点困难,因为没有一个目标出现在近处。但想法很简单。对原始帧进行子集划分,使<code>date</code>在当前行日期之后,<code>Close</code>大于或等于<code>Target1</code>,然后获取第一个条目(这是在使用<code>df.sort_values</code>对其进行排序之后)。你知道吗</p>
<p>如果子集为空,则使用“无”。否则,使用<code>Date</code>。<code>Days to hit target</code>在这一点上非常简单。你知道吗</p>