[英]Python pandas dataframe - find the first occurrence that is greater than a specific value
我有一個看起來像這樣的 dataframe:
print(df.head(20))
date_final Close* year
18399 1949-08-08 15.51 1949
18398 1949-08-09 15.37 1949
18397 1949-08-10 15.44 1949
18396 1949-08-11 15.39 1949
18395 1949-08-12 15.32 1949
18394 1949-08-15 15.25 1949
18393 1949-08-16 15.29 1949
18392 1949-08-17 15.46 1949
18391 1949-08-18 15.50 1949
18390 1949-08-19 15.41 1949
18389 1949-08-22 15.37 1949
18388 1949-08-23 15.17 1949
18387 1949-08-24 15.18 1949
18386 1949-08-25 15.22 1949
18385 1949-08-26 15.28 1949
18384 1949-08-29 15.12 1949
18383 1949-08-30 15.21 1949
18382 1949-08-31 15.22 1949
18381 1949-09-01 15.31 1949
18380 1949-09-02 15.29 1949
我有很多年的每日數據。
我想找到每年的最小值和最大值(max1)。 然后我想知道我什么時候有一個新的最大值,即 max2 什么時候變成 max1。 我想找到發生這種情況的行
我可以使用以下代碼找到最大值和最小值
df_1974.loc[[df_1974["Close*"].idxmax()]]['date_final']
df_1974.loc[[df_1974["Close*"].idxmax()]]['Close*']
但我需要一些幫助才能繼續。 謝謝。
可能建議使用最大值創建DataFrame
,然后找到到期的最大條目:
df = pd.DataFrame(
data=(
('1949-08-08', 15.51),
('1949-08-09', 15.37),
('1949-08-10', 15.44),
('1949-08-11', 15.39),
('1949-08-12', 15.32),
('1949-08-15', 15.25),
('1949-08-16', 15.29),
('1949-08-17', 15.46),
('1949-08-18', 15.5),
('1949-08-19', 15.41),
('1949-08-22', 15.37),
('1949-08-23', 15.17),
('1949-08-24', 15.18),
('1949-08-25', 15.22),
('1949-08-26', 15.28),
('1949-08-29', 15.12),
('1949-08-30', 15.21),
('1949-08-31', 15.22),
('1949-09-01', 15.31),
('1949-09-02', 15.29),
),
columns=('date_final', 'Close*'),
index=range(18399, 18379, -1),
)
df.set_index(pd.to_datetime(df.iloc[:, 0], format='%Y-%m-%d'), inplace=True)
df.drop('date_final', axis=1, inplace=True)
maxes = df.groupby(df.index.year).max()
for _ in range(maxes.shape[0]):
print(df[np.logical_and(
df.index.year == maxes.index[_],
df.iloc[:, 0] == maxes.iloc[_, 0])])
您可能不使用print
而是使用pd.concat
來檢索生成的DataFrame
。 希望有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.