我有一个看起来像这样的数据框。将使用两个分类变量来映射值。也许将其转换为字典会更好。
第二个数据帧非常大,下面显示了屏幕截图。我想从分类变量中获取值以基于第一个数据帧创建一个新的属性(列)。
例如...
FICO_cat为(700,720]且OrigLTV_cat为(75,80]的行将获得值5。
FICO_cat为(700,720]且OrigLTV_cat为(85,90]的行将获得值6。
有有效的方法吗?
答案 0 :(得分:1)
如果您的列标签是FICO_cat
的值,而您的Index
是OrigLTV_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