Попытка извлечь фрагмент столбца из одного кадра данных Pandas, транспонировать фрагмент и вставить его в фрагмент строки аналогичного размера в другом кадре данных.Метки и индексы в обоих фреймах данных различны.С большими фреймами данных я в настоящее время запускаю цикл for, чтобы копировать каждое отдельное значение, как бы ячейка за ячейкой, но невероятно неэффективно.
За исключением цикла for, пробовал .loc, .iloc, с транспонированием, но безуспешно.pivot, pivot_table, melt, похоже, здесь не применимы, или я не могу понять, как применить их к этой, казалось бы, простой проблеме.
# Two dataframes here
import pandas as pd
import numpy as np
numRng = np.arange(20).reshape((5, 4))
df1 = pd.DataFrame(numRng)
newCols = ('A', 'B', 'C', 'D', 'E', 'F')
for newCol in newCols:
df1[newCol] = np.nan
numRng2 = np.arange(1000,976,-1).reshape((6, 4))
df2 = pd.DataFrame(numRng2)
df2.columns = ['M', 'N', 'O', 'P']
df1
df2
# From df1, trying to copy a column-slice, transpose it, and insert it
# into df2 row-slice, has no effect
df1.loc[1, 'B':'E'] = df2.loc[1:4, 'M'].transpose()
df1
# 'Manual' implementation to produce desired df1 geometry
df1.loc[1, 'B'] = 996
df1.loc[1, 'C'] = 992
df1.loc[1, 'D'] = 988
df1.loc[1, 'E'] = 984
df1
В приведенном выше примере df в столбцах df1 строки1 B, C, D, E показаны номера 996, 992, 988 и 984 всрез строки.
Как извлечь срез, транспонировать и вставить без зацикливания каждого значения?