Python 将混合因子水平强制转换为字符串
Python Coercing Mixed Factor Levels to String
我在 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'。我怎样才能强制这些值符合一个唯一的分组(最好是字符串格式)?任何帮助将不胜感激!
您可以尝试将值转换为 int
或 float
,然后转换为一个集合(可迭代对象中的所有唯一值):
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(...))
即可。
我在 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'。我怎样才能强制这些值符合一个唯一的分组(最好是字符串格式)?任何帮助将不胜感激!
您可以尝试将值转换为 int
或 float
,然后转换为一个集合(可迭代对象中的所有唯一值):
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(...))
即可。