2017-07-14 90 views
0

查找數據幀我有一個簡單的數據幀:輸入值,通過大熊貓

s =pd.DataFrame({'Dates':['date1','date1','date1','date2','date2','date2','date3','date3','date3'],'Contracts':['A','B','C','A','B','C','A','B','C']}) 

和字典:

dict = {'date1':['A','B'],'date2':['B']} 

什麼是創建數據框如下的最佳方式?

['date1','date1','date1','date2','date2','date2','date3','date3','date3'],'Contracts':['A','B','C','A','B','C','A','B','C'], 'Check':['Y','Y','N','N','Y','N','N','N','N']}) 

我要完成什麼是字典中查找值和標籤在數據幀S中的元素。

謝謝!

回答

1

可以使用df.apply與拉姆達:

lookup = {'date1':['A','B'],'date2':['B']} 

df.apply(lambda x: 'Y' if x['Dates'] in lookup and x['Contracts'] in lookup[x['Dates']] else 'N', axis=1) 

您可以分配到一個新的列:

In [377]: df['Check'] = df.apply(lambda x: 'Y' if x['Dates'] in lookup and x['Contracts'] in lookup[x['Dates']] else 'N', 
    ...: axis=1) 
In [378]: df 
Out[378]: 
    Contracts Dates Check 
0   A date1  Y 
1   B date1  Y 
2   C date1  N 
3   A date2  N 
4   B date2  Y 
5   C date2  N 
6   A date3  N 
7   B date3  N 
8   C date3  N