def foo(x):
    return [j for i in zip(list(x.index), list(x)) for j in i]
pd.DataFrame({n: foo(df.T[row].nlargest(k)) for n, row in enumerate(df.T)}).T
top k columns with values in pandas dataframe for every row