根据函数中的值计数创建虚拟变量

Creating dummy variable based on value counts in a function

我正在尝试将 0 分配给函数中频率较高的字符串,将 1 分配给频率较低的字符串。我的想法是,它应该采用任何带有二进制字符串的列,并根据值计数分配 0 和 1。我该怎么做?


data = {'status':["Default", "Non-Default", "Non-Default", "Non-Default", "Default", "Non-Default"]}
df = pd.DataFrame(data)
df

        status
    0   Default
    1   Non-Default
    2   Non-Default
    3   Non-Default
    4   Default
    5   Non-Default


    df.value_counts()

    status     
    Non-Default    4
    Default        2
    dtype: int64

您可以使用:

df['binary'] = df['status'].ne(df['status'].mode().iloc[0]).astype(int)

mode 得到最频繁的值,iloc[0] 得到第一个(相等的情况下)。然后我们识别 NOT 这个字符串 (True) 的值并转换为整数 (1)。最常见的字符串将是 0.

输出:

        status  binary
0      Default       1
1  Non-Default       0
2  Non-Default       0
3  Non-Default       0
4      Default       1
5  Non-Default       0