我的一个数据框(df1)看起来像:
Col1 Col2 Col3 Col4 Col5
A B C D E
B X Y null null
C E null null null
Run Code Online (Sandbox Code Playgroud)
另一个数据框(df2)看起来像:
Val1 Val2 Val3
A D X
C Y null
B null null
E null null
Run Code Online (Sandbox Code Playgroud)
我想要的最终数据框(最终)是:
Col1 Col2 Col3 Col4 Col5
Val1 Val1 Val1 Val2 Val1
Val1 Val3 Val2 null null
Val1 Val1 null null null
Run Code Online (Sandbox Code Playgroud)
*如果你想知道为什么我有这个奇怪的条件来满足:我想在这里做特色工程.我在df2中手动对df1中的类似功能进行了分组.
比如说,"Python","Java","C",这3个列在"编程"栏目下,
"领导力","沟通","演示",在"软技能"下进行
用于melt删除缺失值dropna,然后replace按dictionary:
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 NaN
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |