【问题标题】:Map string values in a Pandas Dataframe with integers用整数映射 Pandas Dataframe 中的字符串值
【发布时间】:2014-04-16 07:03:43
【问题描述】:

在 Pandas DataFrame 中,如何用整数映射一列中的字符串。我在DataFrame 中有大约 500 个字符串,需要用以“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 replacing strings in dataframe with numbers

【问题讨论】:

  • 那么你想解析url请求搜索.axd或.aspx之前的字符串然后转换成int?你会用这个 int 做什么,它会形成一个索引还是映射到另一个列?
  • @EdChum :与我们正在映射的 url 和整数没有关联。我只需要映射它们,以便其他处理更容易。
  • 所以你只想列举唯一的请求对吗?
  • @EdChum : 'GET /online/WebResource.axd' 由 1 标识,'GET /online/2/2/22001.aspx' 由 2 等标识?
  • 你将如何处理这个枚举?这会形成一个新的列或数据框,还是你只想要一个 dict 来执行查找?

标签: python pandas dataframe


【解决方案1】:

因此,您可以做的是构建一个临时数据框并将其合并回您现有的数据框:

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

现在将其合并回您的原始数据框

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

【讨论】:

    猜你喜欢
    • 2014-07-13
    • 1970-01-01
    • 2016-09-02
    • 2016-08-04
    • 1970-01-01
    • 2020-12-18
    • 2021-08-04
    • 2017-03-18
    • 2013-09-14
    相关资源
    最近更新 更多