Вам нужно добавить свойство vertical-align
к вашим двум дочерним div.
Если .small
всегда короче, вам нужно применить свойство только к .small
. Однако, если любой из них может быть самым высоким, вы должны применить свойство как к .small
, так и к .big
.
.container{
border: 1px black solid;
width: 320px;
height: 120px;
}
.small{
display: inline-block;
width: 40%;
height: 30%;
border: 1px black solid;
background: aliceblue;
vertical-align: top;
}
.big {
display: inline-block;
border: 1px black solid;
width: 40%;
height: 50%;
background: beige;
vertical-align: top;
}
Вертикальный выравнивание влияет на ядро встроенного или табличного ящика, и есть большой нумер различные значения для этого свойства. Подробнее см. В https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-align .
Если я правильно понимаю ваш вопрос, вам нужно динамическое «скользящее окно», по которому можно рассчитать минимальное значение. Предполагая, что ваш индекс является индексом по умолчанию, то есть он отсортирован в порядке возрастания, вы можете попробовать следующий подход:
import pandas as pd
import numpy as np
from bisect import bisect_left
df = pd.DataFrame({'open': [1, 2, 3, 4, 5],
'high': [5, 6, 6, 5, 7],
'low': [1, 3, 2, 4, 4],
'close': [3, 5, 3, 5, 6]})
Используются те же данные выборки, что и для mommermi, но с низким значением на третий день, измененным на 2 так как третий день также должен быть включен в «скользящее окно».
df['day'] = np.where(df['close'] > df['open'], 'bull', None)
Мы вычисляем столбец day
, используя векторизованную операцию numpy, которая должна быть немного быстрее.
bull_index_array = df.loc[df['day'] == 'bull'].index
Мы храним значения индекса строк (дней), которые мы пометили как быков.
def find_index(a, x):
i = bisect_left(a, x)
return a[i-1]
Бисект из базовой библиотеки позволит нам эффективно найти индекс предыдущего бычьего дня. Для этого требуется, чтобы индекс был отсортирован по умолчанию.
def min_value(x):
cur_index = x.name
prev_bull_index = find_index(bull_index_array, cur_index)
return df.loc[prev_bull_index:cur_index, 'low'].min()
Далее мы определяем функцию, которая будет создавать наше «динамическое» скользящее окно путем нарезки исходного кадра данных по предыдущему и текущему индексу.
df['min'] = df.apply(min_value, axis=1)
Наконец, мы применяем функцию min_value по строкам к кадру данных, получая это:
open high low close day min
0 1 5 1 3 bull NaN
1 2 6 3 5 bull 1.0
2 3 6 2 3 None 2.0
3 4 5 4 5 bull 2.0
4 5 7 4 6 bull 4.0
Это должно сработать:
import pandas as pd
df = pd.DataFrame({'open': [1, 2, 3, 4, 5],
'high': [5, 6, 6, 5, 7],
'low': [1, 3, 3, 4, 4],
'close': [3, 5, 3, 5, 6]})
df['day'] = df.apply(lambda x: 'bull' if (
x['close'] > x['open']) else None, axis=1)
df['min'] = None
df['min'][df['day'] == 'bull'] = pd.rolling_min(
df['low'][df['day'] == 'bull'], window=2)
print(df)
# close high low open day min
# 0 3 5 1 1 bull NaN
# 1 5 6 3 2 bull 1
# 2 3 6 3 3 None None
# 3 5 5 4 4 bull 3
# 4 6 7 4 5 bull 4
Открыть для комментариев!