pandas.factorize
将输入值编码为枚举类型或分类变量。
但是我怎样才能轻松有效地转换数据框的许多列呢?反向映射步骤呢?
示例:此数据框包含带有字符串值的列,例如“type 2”,我想将其转换为数值 - 并可能稍后将它们转换回来。
原文由 clstaudt 发布,翻译遵循 CC BY-SA 4.0 许可协议
pandas.factorize
将输入值编码为枚举类型或分类变量。
但是我怎样才能轻松有效地转换数据框的许多列呢?反向映射步骤呢?
示例:此数据框包含带有字符串值的列,例如“type 2”,我想将其转换为数值 - 并可能稍后将它们转换回来。
原文由 clstaudt 发布,翻译遵循 CC BY-SA 4.0 许可协议
我还发现这个答案很有帮助: https ://stackoverflow.com/a/20051631/4643212
我试图从 Pandas DataFrame 中的现有列(名为“SrcIP”的 IP 地址列表)中获取值,并将它们映射到新列(在此示例中名为“ID”)中的数值。
解决方案:
df['ID'] = pd.factorize(df.SrcIP)[0]
结果:
SrcIP | ID
192.168.1.112 | 0
192.168.1.112 | 0
192.168.4.118 | 1
192.168.1.112 | 0
192.168.4.118 | 1
192.168.5.122 | 2
192.168.5.122 | 2
...
原文由 Gabe F. 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
您可以使用
apply
如果您需要factorize
每列分别:如果您需要相同的字符串值相同的数字值:
如果您只需要为某些列应用该函数,请使用一个子集:
解决方案
factorize
:可以通过
map
通过dict
将它们翻译回来,您需要通过drop_duplicates
删除重复项: