Вы можете попробовать транспонировать кадр данных, затем после подсчета только ненулевые значения и последний набор 1
#bit of complex procedure, solution involving with.
def fill_values(df):
df = df[::-1]
a = df == 1
b = a.cumsum()
#Function in counting the cummulative not null values
arr = np.where(a, b-b.mask(a).ffill().fillna(0).astype(int), 1)
return (b-b.mask(a).ffill().fillna(0).astype(int))[::-1]*20
df.apply(fill_values,1).replace(0,np.nan)-20
Out:
20 40 60 80 100 120 140
1 40.0 20.0 0.0 NaN NaN NaN NaN
2 80.0 60.0 40.0 20.0 0.0 NaN NaN
3 60.0 40.0 20.0 0.0 NaN NaN NaN
4 20.0 0.0 NaN NaN 40.0 20.0 0.0
Существует два способа потянуть строки с ИЗБЫТКОМ
, glutStrokeString нарисует текст в 3D
(источник: uwa.edu.au)
и glutBitmapString нарисует текст направление пользователь
(источник: sourceforge.net )
Если Вам не нравятся встроенный штриховой шрифт или растровый шрифт, который идет с ИЗБЫТКОМ согласно ответ epatel , то Вы будете иметь к решению для самокрутки.
NeHe имеет некоторые хорошие учебные руководства (наряду с полностью рабочим примером кода) на этом:
void RenderString(float x, float y, void *font, const char* string, RGB const& rgb)
{
char *c;
glColor3f(rgb.r, rgb.g, rgb.b);
glRasterPos2f(x, y);
glutBitmapString(font, string);
}
И можно назвать его как;
RenderString(0.0f, 0.0f, GLUT_BITMAP_TIMES_ROMAN_24, "Hello", RGB(1.0f, 0.0f, 0.0f));
Это обычно немного противно и не просто. Дайте этому инструменту попытку: