在 Pandas 数据框中将字符串值映射为整数

7
在Pandas的DataFrame中,如何将一列字符串映射为整数。我有大约500个字符串在DataFrame中,需要用以'1'开头的整数替换它们。
样例DataFrame。
                                    Request  count
547             GET /online/WebResource.axd  37506
424              GET /online/2/2/22001.aspx  13315
699          POST /online/2/6/1/261001.aspx  13236
546          GET /online/ScriptResource.axd  12255
492               GET /online/2/6/Home.aspx  10462
660             POST /online/2/2/22001.aspx   9803

我已将所有的请求收集到一个列表中。
requestlist = df.Request.unique()

不知道如何将这些请求与1-500进行映射。类似的问题。 python pandas用数字替换数据帧中的字符串


所以你想解析URL请求以查找.axd或.aspx之前的字符串,然后转换为int?你将如何处理这个int,它会形成一个索引还是映射到另一列? - EdChum
@EdChum:URL和我们正在映射的整数之间没有关联。我只需要将它们映射起来,以便于其他处理更加容易。 - Nilani Algiriyage
所以你只想枚举唯一的请求,是这样吗? - EdChum
@EdChum: "GET /online/WebResource.axd" 被标识为1,"GET /online/2/2/22001.aspx" 被标识为2等等。 - Nilani Algiriyage
你会如何处理这个枚举?你会将其形成为一个新的列或数据框,还是只是想要一个字典来执行查找操作? - EdChum
@EdChum:我希望将这些值放在DataFrame的单独一列中。 - Nilani Algiriyage
1个回答

10

你可以构建一个临时数据帧,并将其合并回你现有的数据帧:

temp_df = pd.DataFrame({'Request': df.Request.unique(), 'Request_id':range(len(df.Request.unique()))})

现在将这个结果合并回你的原始数据框中。

df = df.merge(temp_df, on='Request', how='left')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接