【问题标题】:pandas dataframe change column value熊猫数据框更改列值
【发布时间】:2017-06-09 03:14:43
【问题描述】:

我有这样的python dict:

keysdict={'date': {20: '201012', 21: '201101', 22: '201102', 23: '201103', 24: '201104', 25: '201105', 26: '201106', 27: '201107', 28: '201108', 29: '201109', 30: '201110', 31: '201111'}}

我有这样的熊猫数据框

A    B
20  0.123
21  2.123
22  4.45
23  3.2
24  3.1
25  3.9
26  4.2

现在我想添加一个额外的列 C ,它从 Column A 中的 dict 键中获取相应的值。像下面一个

A    B      C
20  0.123  201012 
21  2.123  201101
22  4.45   201102
23  3.2    201103
24  3.1    201104
25  3.9    201105
26  4.2    201106

我试过了

df.loc[:,'C']=keysdict['date'][df.loc['A']]

但是遇到错误

KeyError: '标签 [A] 不在 [index] 中

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    改用地图:

    df['C'] = df['A'].map(keysdict['date'])
    

    如果“A”列是索引:

    df['C'] = df.map(keysdict['date'])
    

    【讨论】:

      【解决方案2】:

      不用apply也可以直接使用map

      df['C'] = df['A'].map(keysdict['date'])
      
          A   B       C
      0   20  0.123   201012
      1   21  2.123   201101
      2   22  4.450   201102
      3   23  3.200   201103
      4   24  3.100   201104
      5   25  3.900   201105
      6   26  4.200   201106
      

      【讨论】:

        【解决方案3】:

        df.loc['A'] 指的是标有“A”的,您需要,它以df['A'] 访问。这是正确的代码:

        df = pd.DataFrame({'A':[20,21,22,23], 'B':[0.123,2.123,4.45,3.2]})
        #    A      B
        #0  20  0.123
        #1  21  2.123
        #2  22  4.450
        #3  23  3.200
        

        示例键字典:

        keysdict = {'date' : {20:0,21:1,22:2,23:3}}
        
        df['C'] = df['A'].apply(lambda x: keysdict['date'][x])
        #    A      B  C
        #0  20  0.123  0
        #1  21  2.123  1
        #2  22  4.450  2
        #3  23  3.200  3
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-02-21
          • 2018-02-20
          • 2021-12-29
          • 2017-01-16
          • 1970-01-01
          • 2020-08-06
          • 2015-07-23
          • 2019-06-21
          相关资源
          最近更新 更多