我的一个数据帧(df1)看起来是这样的:
Col1 Col2 Col3 Col4 Col5
A B C D E
B X Y null null
C E null null null 另一个数据帧(Df2)如下所示:
Val1 Val2 Val3
A D X
C Y null
B null null
E null null我想要的最终数据框架是:
Col1 Col2 Col3 Col4 Col5
Val1 Val1 Val1 Val2 Val1
Val1 Val3 Val2 null null
Val1 Val1 null null null*如果你想知道我为什么要满足这个奇怪的条件:我想在这里做特性工程。我在df1中手动将类似的特性分组在df2中。
比方说,"Python“、"Java”、"C",这3条都列在“编程”*下面。
“领导”、“交流”、“演讲”都属于“软技能”。
发布于 2019-02-05 07:21:52
使用melt,通过dropna删除缺失的值,然后通过dictionary删除replace
df = df2.melt().dropna()
d = dict(zip(df['value'],df['variable']))
#alternative
#d = df.set_index('value')['variable']
print (d)
{'A': 'Val1', 'C': 'Val1', 'B': 'Val1', 'E': 'Val1', 'D': 'Val2', 'Y': 'Val2', 'X': 'Val3'}
df1 = df1.replace(d)
#alternative
#df1 = df1.apply(lambda x: x.map(d)).fillna(df1)
print (df1)
Col1 Col2 Col3 Col4 Col5
0 Val1 Val1 Val1 Val2 Val1
1 Val1 Val3 Val2 NaN NaN
2 Val1 Val1 NaN NaN NaNhttps://stackoverflow.com/questions/54529338
复制相似问题