替换dataframe列中的值

时间:2017-10-26 08:28:21

标签: python pandas

我有数据框

     site1  site2   site3   site4   site5   site6   site7   site8   site9   site10
session_id                                      
21669   56  55  0   0   0   0   0   0   0   0
54843   56  55  56  55  0   0   0   0   0   0
77292   946 946 951 946 946 945 948 784 949 946
114021  945 948 949 948 945 946 947 945 946 946
146670  947 950 948 947 950 952 946 951 946 947

我有json和

{u'i1-js-14-3-01-11544-644949368-i.init.cedexis-radar.net': 13852,
 u'static.vol24.fr': 6240,
 u'mars.nasa.gov': 39840,
 u'scholar.google.fr': 3899,
 u'9zouxfza1h.s.ad6media.fr': 9677,
 u'afecaa4b0c028e55502bc297410239d4d.profile.mad50.cloudfront.net': 34973,
 u'www.decoration-stickers.com': 950,
 u'www.aldaniti.net': 56,
 u'cc.bingj.com': 55,
 u'www.bwin.fr': 6824,
...}

我尝试用

替换数据框中的值
site_dict_upd = {y:x for x,y in site_dict.iteritems()}
full_sites_names = pd.DataFrame()
full_sites_names = [full_sites[col].map(site_dict) for col in sites]

但它返回所有NaN值。 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

另一种方法是使用applymap

df = df.applymap(lambda x: site_dict_upd[x] if x in site_dict_upd else x)

修改

coldspeed建议:

df = df.applymap(lambda x: site_dict_upd.get(x, x))

答案 1 :(得分:1)

只需使用.replace方法:

full_sites_names.replace(site_dict_upd, inplace = True)

答案 2 :(得分:1)

我认为您需要replace,如果不需要替换可能需要将值转换为相同的types

site_dict_upd = {y:x for x,y in site_dict.items()}
#convert to same types if necessary (int)
df = full_sites_names.astype(int).replace(site_dict_upd)
print (df)
                       site1                        site2             site3  \
session_id                                                                    
21669       www.aldaniti.net                 cc.bingj.com                 0   
54843       www.aldaniti.net                 cc.bingj.com  www.aldaniti.net   
77292                    946                          946               951   
114021                   945                          948               949   
146670                   947  www.decoration-stickers.com               948   

                   site4                        site5  site6  site7  site8  \
session_id                                                                   
21669                  0                            0      0      0      0   
54843       cc.bingj.com                            0      0      0      0   
77292                946                          946    945    948    784   
114021               948                          945    946    947    945   
146670               947  www.decoration-stickers.com    952    946    951   

            site9  site10  
session_id                 
21669           0       0  
54843           0       0  
77292         949     946  
114021        946     946  
146670        946     947