Python将混合因子级别强制转换为字符串

问题描述 投票:1回答:1

我在Pandas数据框中有一个具有以下唯一因子级别的列:

My_Factor_Levels = [9.0, 0, 6.0, '9', '6', 9, 6, 'DE', '3U', '9.0', '6Z', '6.0', '9.', '6.', '3B', '1U', '2Z', '68', '6B']

请注意,My_factor_Levels中有十个单独的值(9.0、6.0,'9','6',9、6,'9.0','6.0','9。','6。”)代表来自两个不同的因子水平-“ 9”和“ 6”。如何强制这些值符合一个唯一的分组(最好是字符串格式)?任何帮助将不胜感激!

python categories categorical-data
1个回答
1
投票

您可以尝试将值转换为intfloat,然后转换为集合(所有可重复的唯一值:])>

My_Factor_Levels = [9.0, 0, 6.0, '9', '6', 9, 6, 'DE', '3U', '9.0', '6Z', '6.0', '9.', '6.', '3B', '1U', '2Z', '68', '6B']

def safe_convert(x):
    try:
        return str(float(x))
    except:
        return x

coerced = set([safe_convert(x) for x in My_Factor_Levels])
>>> coerced
{'0.0', '1U', '2Z', '3B', '3U', '6.0', '68.0', '6B', '6Z', '9.0', 'DE'}

[如果您希望最终的coerced结果作为列表,只需执行list(set(...))

© www.soinside.com 2019 - 2024. All rights reserved.