python - 根据 function 中的 value 计数创建 dummy variable

我正在尝试将 0 分配给 function 中更频繁的字符串,并将 1 分配给不太频繁的字符串。我的想法是它应该采用任何带有二进制字符串并基于 value 计数分配 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

回答1

您可以使用:

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

mode 获得最频繁的 value,而 iloc[0] 获得第一个(在相等的情况下)。然后我们识别不是这个字符串的 values (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