python - 我有两个数据框。我想根据条件用另一个数据帧的 header 值替换一个数据帧的值

标签 python pandas

我的一个数据框 (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

我想要的最终数据框(final)是:

Col1    Col2    Col3    Col4    Col5

Val1    Val1    Val1    Val2    Val1
Val1    Val3    Val2    null    null
Val1    Val1    null    null    null

*如果你想知道为什么我要满足这个奇怪的条件:我想在这里做特征工程。我在 df2 中手动对 df1 中的类似功能进行了分组。

例如,“Python”、“Java”、“C”,这 3 个位于“编程”栏下*
“领导力”、“沟通”、“演示”属于“软技能”

最佳答案

使用melt通过 dropna 删除缺失值然后 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   NaN

关于python - 我有两个数据框。我想根据条件用另一个数据帧的 header 值替换一个数据帧的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54529338/

相关文章:

python - 使用 python 将数据框上传到 google 表格时出错?

python-3.x - plotly 有办法将 x 轴上的日期转换为一周中的某一天吗?

python - 使用 Matplotlib 和 Pandas 时重命名 X 轴标签

python - Numpy 索引 : first (varying) number of elements from each row in 2d array

python - 使用 pip v18.0 安装 Pillow (v5.2.0) 后没有名为 PIL 的模块

python - Matlab 等价于 Python 的 'reduce' 函数

python - 为什么我的可选组不是贪心的?/(5)?.*/

python - 如何将滚动条附加到 tkinter 中的下拉列表?

python - 将数据框拆分为单独的 CSV 文件

python - 如何在 Pandas 中选择除一列之外的所有列?