【问题标题】:What is the fastest way to map value in DataFrame/Series according to a dict?根据字典在 DataFrame/Series 中映射值的最快方法是什么?
【发布时间】:2016-03-17 11:54:19
【问题描述】:

我得到了一个包含 5,000,000 行 x 3 列的数据集。

基本上是这样的:

    location       os  clicked
0      China      ios      1
1        USA  android      0
2      Japan      ios      0
3      China  android      1

所以,我去了 Pandas.DataFrame 寻求一些很棒的快速支持。

现在我将根据字典替换位于数据帧系列中的值。

注意:我用作参考的字典如下所示:

{   China : 1,
      USA : 2,
    Japan : 3,
     .... : ..
 }

因为我使用Pandas.DataFrame.Column_Label.drop_duplicates()

最后,我得到了:

    location     os  clicked
0         1      ios      1
1         2  android      0
2         3      ios      0
3         1  android      1

我已经在 446 秒中完成了完整的映射。

有更快的方法吗?

我认为replace() 函数浪费了很多时间进行无意义的搜索。那么我是在走向正确的结局吗?

【问题讨论】:

  • 试试df['location'] = df['location'].map(d) d 是你的字典

标签: python python-2.7 pandas dataframe series


【解决方案1】:

我现在可以回答我自己的问题了。

这样做的重点是处理分类数据,它在分类任务等上一遍又一遍地出现。首先,我们希望使用 one-hot 编码方法将分类数据转换为数值向量,这是普遍的, sklearn 包或 statsmodel 可接受。

为此,只需使用以下命令将 cvs 文件读取为 pandas.DataFrame: data = pd.read_csv(dir, encoding='utf-8')

然后:

data_binary = pd.get_dummies(data, prefix=['os','locate'],columns=['os','location'])

一切顺利。

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 1970-01-01
    • 2019-08-08
    • 2023-03-10
    • 1970-01-01
    • 2017-12-11
    • 2013-06-13
    • 1970-01-01
    • 2016-09-02
    相关资源
    最近更新 更多