【问题标题】:Pandas to replace value using map functionPandas 使用 map 函数替换值
【发布时间】:2020-01-12 08:37:03
【问题描述】:

我有这样的熊猫数据框(data.png) enter image description here

2我想使用 dict(dat1)enter image description here 替换部分 [0, '218.188.2.4'] 中的单个值 '218.188.2.4'。

我在想你是否有更有效的方法或功能来做到这一点。 希望得到您的回应。

在我使用地图功能后,我终于得到了 Nan。我知道它只能用单个值替换值。我知道尝试编写一个函数来替换它是可能的。虽然有点复杂。

带地图功能: fd_id['参数值向量'].map(token_encode_dict)

在对应位置返回NaN

【问题讨论】:

  • 您需要更改问题的格式以便阅读。此外,您的图像未正确包含。没有人会花时间看这个。

标签: python-3.x pandas


【解决方案1】:

Map 函数只能用于处理单个值(不是列表)。 您可以将列表拆分为不同的列并使用 map 替换值。然后可以将所有列整合在一起实现替换。

【讨论】:

  • 嗨@Newt。如果这有帮助,请查看发布的答案。
  • ABCD 0 no no no yes 1 yes yes yes [no,'1','2'] 2 yes no yes no 3 no yes no yes 其实我需要修改'no'是一个列表。地图功能做不到。
【解决方案2】:

我不知道我是否正确理解了您的问题,但您可以按如下方式跨列映射 dict 值..

示例数据框:

>>> df
     A    B    C    D
0   no   no   no  yes
1  yes  yes  yes   no
2  yes   no  yes   no
3   no  yes   no  yes

结果:

>>> for col in 'ABCD':
     df[col] = df[col].map({'yes':True, 'no':False})

>>> df
       A      B      C      D
0  False  False  False   True
1   True   True   True  False
2   True  False   True  False
3  False   True  False   True

【讨论】:

  • 使用map函数求解单值是对的。当它像 [no, yes, no] 时,它将返回 NaN。所以尝试将其拆分为多个列,然后使用 map 函数将解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
相关资源
最近更新 更多