a data.table
решение:
> dt <- data.table(y = c(NA, 2, 2, NA, NA, 3, NA, 4, NA, NA))
> dt[, y_forward_fill := y[1], .(cumsum(!is.na(y)))]
> dt
y y_forward_fill
1: NA NA
2: 2 2
3: 2 2
4: NA 2
5: NA 2
6: 3 3
7: NA 3
8: 4 4
9: NA 4
10: NA 4
этот подход мог бы работать и с первичными нулями заполнения:
> dt <- data.table(y = c(0, 2, -2, 0, 0, 3, 0, -4, 0, 0))
> dt[, y_forward_fill := y[1], .(cumsum(y != 0))]
> dt
y y_forward_fill
1: 0 0
2: 2 2
3: -2 -2
4: 0 -2
5: 0 -2
6: 3 3
7: 0 3
8: -4 -4
9: 0 -4
10: 0 -4
этот метод очень полезен для данных по шкале и где вы хотите выполнить форвардную заливку по группам (группам), что тривиально с data.table
. просто добавьте группу (ы) в предложение by
до логики cumsum
.
попробовали ли вы команду display
?
from IPython.display import display
display(salaries.head())
display(teams.head())
Более простой способ:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
Сохраняет необходимость повторного ввода «Display»
Скажите, что ячейка содержит это:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
a = 1
b = 2
a
b
Тогда выход будет:
Out[1]: 1
Out[1]: 2
Если мы используем Ipython.display.display:
from Ipython.display import display
a = 1
b = 2
display(a)
display(b)
Выход:
1
2
So то же самое, но без части Out[n]
.
IPython Notebook показывает только последнее возвращаемое значение в ячейке. Самое простое решение для вашего дела - использовать две ячейки.
Если вам действительно нужна только одна ячейка, вы можете сделать взломать вот так:
class A:
def _repr_html_(self):
return salaries.head()._repr_html_() + '</br>' + teams.head()._repr_html_()
A()
Если вам это нужно часто, сделайте его функцией:
def show_two_heads(df1, df2, n=5):
class A:
def _repr_html_(self):
return df1.head(n)._repr_html_() + '</br>' + df2.head(n)._repr_html_()
return A()
Использование:
show_two_heads(salaries, teams)
Версия для более чем двух головок:
def show_many_heads(*dfs, n=5):
class A:
def _repr_html_(self):
return '</br>'.join(df.head(n)._repr_html_() for df in dfs)
return A()
Использование:
show_many_heads(salaries, teams, df1, df2)
Предоставить,
print salaries.head()
teams.head()
print salaries.head()
не очень хорошо отформатирован.
– Lokesh
21 December 2015 в 16:18
display()
автоматически становятся доступными пользователю без импорта. & Quot; – Georgy 22 May 2018 в 15:33