如何通过类似vlookup的过程在另一个数据帧上创建新的熊猫列

时间:2018-09-13 20:47:47

标签: pandas dictionary categorical-data

我有一个看起来像这样的数据框。将使用两个分类变量来映射值。也许将其转换为字典会更好。 Index, and Column names represent possible values taken by two categorical variables in another data-frame

第二个数据帧非常大,下面显示了屏幕截图。我想从分类变量中获取值以基于第一个数据帧创建一个新的属性(列)。

例如...

FICO_cat为(700,720]且OrigLTV_cat为(75,80]的行将获得值5。

FICO_cat为(700,720]且OrigLTV_cat为(85,90]的行将获得值6。

有有效的方法吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您的列标签是FICO_cat的值,而您的IndexOrigLTV_cat,这应该起作用:

给出一个数据框df

         780+  (740,780)  (720,740)
(60,70)     3          3          3
(70,75)     4          5          4
(75,80)     3          1          2

要做:

df = df.unstack().reset_index()
df.rename(columns = {'level_0' : 'FICOCat', 'level_1' : 'OrigLTV', 0 : 'value'}, inplace = True)

输出:

     FICOCat  OrigLTV  value
0       780+  (60,70)      3
1       780+  (70,75)      4
2       780+  (75,80)      3
3  (740,780)  (60,70)      3
4  (740,780)  (70,75)      5
5  (740,780)  (75,80)      1
6  (720,740)  (60,70)      3
7  (720,740)  (70,75)      4
8  (720,740)  (75,80)      2