我正在尝试将 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