我有数据框
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值。 我该如何解决这个问题?
答案 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