では、私はそれで日付を持つデータフレームdf
を持っている:パンダ:ループデータフレームを介してカウンタ
df['Survey_Date'].head(4)
Out[65]:
0 1990-09-28
1 1991-07-26
2 1991-11-23
3 1992-10-15
私は別のデータフレームflow_df
を使用して、日付の2の間のメトリックを計算することに興味を持っています。例えば
date flow
0 1989-01-01 7480
1 1989-01-02 5070
2 1989-01-03 6410
3 1989-01-04 10900
4 1989-01-05 11700
、私はcurrent_date
とearly_date
に基づいて別のデータフレームを照会したいと思います:
flow_df
は次のようになります。関心の第1の期間は、次のようになります。
current_date = 1991-07-26
early_date = 1990-09-28
私はループの不格好に書かれているし、それは仕事を取得しますが、私はもっとエレガントな方法があると確信しています:
私のアプローチをカウンターでforループ:
def find_peak(early_date,current_date,flow_df):
mask = (flow_df['date']>= early_date) & (flow_df['date'] < current_date)
query = flow_df.loc[mask]
peak_flow = np.max(query['flow'])*0.3048**3
return peak_flow
n=0
for thing in df['Survey_Date'][1:]:
early_date = df['Survey_Date'][n]
current_date = thing
peak_flow = find_peak(early_date,current_date,flow_df)
n+=1
df['Avg_Stage'][n] = peak_flow
カウンタとforループなしでこれを行うにはどうすればよいですか?
所望の出力は次のようになります。あなたはリスト内包にそれを置くことができる。もちろん、
for early_date, current_date in zip(df['Survey_Date'], df['Survey_Date'][1:]):
#do whatever yo want.
:あなたはzip()
を使用することができます
Survey_Date Avg_Stage
0 1990-09-28
1 1991-07-26 574.831986
2 1991-11-23 526.693347
3 1992-10-15 458.732915
4 1993-04-01 855.168767
5 1993-11-17 470.059653
6 1994-04-07 419.089330
7 1994-10-21 450.237861
8 1995-04-24 498.376500
9 1995-06-23 506.871554
あなたは 'early-date'と' current-date'の間の期間を選択しますか? –
はい、私の質問はどのようにデータフレームを対象の日付でループするかです。 – dubbbdan
あなたのデータフレームには、 'early-date'と' current-date'の間に何もありません。あなたは希望の出力を投稿できますか? –