【发布时间】:2017-04-20 01:52:36
【问题描述】:
我有一个数据框df_in,如下所示:
import pandas as pd
import numpy as np
dic_in = {'A':['A1','A1','A1','L3','A3','A3','B1','B1','B1','B2','A2'],
'B':['xxx','ttt','qqq','nnn','lll','nnn','eee','xxx','qqq','bbb','sss'],
'C':['fas','efe','pfo','scs','grj','rpo','cbb','asf','asc','wq3','mls']}
df_in = pd.DataFrame(dic_in)
我还有一个名为 df_map 的数据框:
dic_map = {'X':['A1' ,'A1' ,'A1' ,'A2' ,'A3' ,'B1' ,'B1' ,'B1' ,'B1' ,'B2' ,'B3' ,'B3' ,'L1', 'L3' ,'L3'],
'Y':['qqq','ttt','xxx','sss','lll','eee','qqq','xxx','zzz','bbb','mmm','ooo','kkk','nnn','ttt']}
df_map = pd.DataFrame(dic_map)
我的目标是研究df_in 中的每一个row[['A','B']];如果在df_map 中识别出这两个项目,那么我提取相应索引的值并将其设置为第一个数据帧中的另一列。
例如:A1 - xxx 这对情侣在0 的地图中找到;因此我会在这对夫妇A1 - xxx 旁边放置一个0。
如果没有找到一对夫妇,那么我将放置NaN。
结果应该是这样的:
Idx A B C
0 2 A1 xxx fas
1 1 A1 ttt efe
2 0 A1 qqq pfo
3 13 L3 nnn scs
4 4 A3 lll grj
5 NaN A3 nnn rpo
6 5 B1 eee cbb
7 7 B1 xxx asf
8 6 B1 qqq asc
9 9 B2 bbb wq3
10 3 A2 sss mls
你能建议我一个聪明有效的方法来实现我的目标吗?
【问题讨论】:
标签: python pandas dataframe replace mapping