如何根据值为 above/below 行中位数(如果 > 中位数,1,否则 0)将数据帧转换为二进制?

How to transform dataframe to binary based on values being above/below the row median (if > median, 1, else 0)?

我希望根据行中位数将数据帧转换为二进制。请在下面查看我的输入和预期输出。

import pandas as pd
df_input = pd.DataFrame({'row1': [5, 10, 20], 'row2': [1, 30, 40],},
                        index = ['2021-02-24', '2021-02-25', '2021-02-26'])
df_expected_output = pd.DataFrame({'row1': [1, 0, 0], 'row2': [0, 1, 1],},
                        index = ['2021-02-24', '2021-02-25', '2021-02-26'])
df_median = df_input.median(axis=1)

我找到了这个 但无法使用它来比较行。

(dat > dat.median()).astype('int')

如何对行执行此操作?

gt 与正确的轴一起使用:

df_input.gt(df_input.median(axis=1), axis=0).astype(int)

输出:

            row1  row2
2021-02-24     1     0
2021-02-25     0     1
2021-02-26     0     1