为了账号安全,请及时绑定邮箱和手机立即绑定

用DECT重新映射熊猫列中的值

用DECT重新映射熊猫列中的值

噜噜哒 2019-06-14 10:24:51
用DECT重新映射熊猫列中的值我有一本像这样的字典:di = {1: "A", 2: "B"}我想将它应用于Datarame的“col1”列,类似于:     col1   col20       w      a1       1      22       2    NaN得到:     col1   col20       w      a1       A      22       B    NaN我怎么才能做得最好?出于某种原因,谷歌与此相关的术语只向我展示了如何从dicts生成列的链接,反之亦然:-/
查看完整描述

3 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

你可以用.replace..例如:

>>> df = pd.DataFrame({'col2': {0: 'a', 1: 2, 2: np.nan}, 'col1': {0: 'w', 1: 1, 2: 2}})>>> di = {1: "A", 2: "B"}>>> df
  col1 col20    w    a1    1    22    2  NaN>>> df.replace({"col1": di})
  col1 col20    w    a1    A    22    B  NaN

或直接在Series,即.df["col1"].replace(di, inplace=True).


查看完整回答
反对 回复 2019-06-14
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

你的问题有点含糊不清。至少有两种解释:

  1. 钥匙在里面

    di

    参考索引值
  2. 钥匙在里面

    di

    请参阅

    df['col1']

    价值
  3. 钥匙在里面

    di

    参考索引位置(不是OP的问题,而是为了好玩)。

下面是每个案例的解决方案。


案例1:如果.的钥匙di用于引用索引值,则可以使用update方法:

df['col1'].update(pd.Series(di))

例如,

import pandas as pdimport numpy as np

df = pd.DataFrame({'col1':['w', 10, 20],
                   'col2': ['a', 30, np.nan]},
                  index=[1,2,0])#   col1 col2# 1    w    a# 2   10   30# 0   20  NaNdi = {0: "A", 2: "B"}# Th
                  e value at the 0-index is mapped to 'A', the value at the 2-index is mapped to 'B'df['col1'].update(p
                  d.Series(di))print(df)

产量

  col1 col21    w    a2    B   300    A  NaN

我已经修改了你最初的文章中的值,所以更清楚的是update正在做。注意键在di与索引值关联。索引值的顺序-即索引地点-不重要。


案例2:如果钥匙在di请参阅df['col1']值,然后@DanAllan和@DSM展示了如何用replace:

import pandas as pdimport numpy as np

df = pd.DataFrame({'col1':['w', 10, 20],
                   'col2': ['a', 30, np.nan]},
                  index=[1,2,0])print(df)#   col1 col2# 1    w    a# 2   10   30# 0   20 
                   NaNdi = {10: "A", 20: "B"}# The values 10 and 20 are replaced by 'A' and 'B'df['col1'].
                   replace(di, inplace=True)print(df)

产量

  col1 col21    w    a2    A   300    B  NaN

注意,在这种情况下,键在di更改为匹配价值在……里面df['col1'].


案例3:如果钥匙在di请参考索引位置,然后可以使用

df['col1'].put(di.keys(), di.values())

df = pd.DataFrame({'col1':['w', 10, 20],
                   'col2': ['a', 30, np.nan]},
                  index=[1,2,0])di = {0: "A", 2: "B"}# The values at the 0 and 2 index locations are replaced by 'A' and 
                  'B'df['col1'].put(di.keys(), di.values())print(df)

产量

  col1 col21    A    a2   10   300    B  NaN

在这里,更改了第一行和第三行,因为di02,它使用Python的基于0的索引引用第一个和第三个位置。


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 473 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信