Подстановка панд данных и сохранение исходного размера - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь установить подкадр данных, но хочу, чтобы новый кадр данных имел тот же размер, что и исходный кадр данных.
Присоединение ввода, вывода и ожидаемого вывода.

df_input = pd.DataFrame([[1,2,3,4,5], [2,1,4,7,6], [5,6,3,7,0]], columns=["A", "B","C","D","E"])

df_output=pd.DataFrame(df_input.iloc[1:2,:])

df_expected_output=pd.DataFrame([[0,0,0,0,0], [2,1,4,7,6], [0,0,0,0,0]], columns=["A", "B","C","D","E"])  

Пожалуйста, предложите путь вперед.

Ответы [ 4 ]

0 голосов
/ 13 февраля 2019

Еще один вариант - создать DataFrame с нулевыми значениями, а затем обновить его срезом df_input

df_output = pd.DataFrame(0, index=df_input.index, columns = df_input.columns)
df_output.update(df_input.iloc[1:2,:])
0 голосов
/ 30 ноября 2018

Настройка

df = pd.DataFrame([[1,2,3,4,5], [2,1,4,7,6], [5,6,3,7,0]], columns=["A", "B","C","D","E"])
output = df_input.iloc[1:2,:]

Вы можете создать mask и использовать умножение:

m = df.index.isin(output.index)
m[:, None] * df

   A  B  C  D  E
0  0  0  0  0  0
1  2  1  4  7  6
2  0  0  0  0  0
0 голосов
/ 30 ноября 2018

Я буду использовать where + between

df_input.where(df_input.index.to_series().between(1,1),other=0)
Out[611]: 
   A  B  C  D  E
0  0  0  0  0  0
1  2  1  4  7  6
2  0  0  0  0  0
0 голосов
/ 30 ноября 2018

Установите индекс после возврата обратно к оригиналу с помощью reindex.Это установит все значения для новых строк на NaN, которые можно заменить на 0 через fillna.Поскольку NaN является типом floa t, вы можете преобразовать все обратно в int с помощью astype.

 df_input.iloc[1:2,:].reindex(df_input.index).fillna(0).astype(int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...