根据字典填充选定列的 NaN,其键是列名,值是 Python 中另一列的内容

是这样吗

对于数据框df1如下:

         id  products  black metal  non-ferrous metals  precious metal
0  M0066350    copper          NaN                 NaN             NaN
1  M0066352  aluminum          NaN                 NaN             NaN
2  M0066353      gold          NaN                 NaN             NaN
3  M0066354    silver          NaN                 NaN             NaN
4  S0200837   soybean          NaN                 NaN             NaN
5  S0212350     Apple          NaN                 NaN             NaN
6  S0212351  iron ore          NaN                 NaN             NaN
7  S0212352      coke          NaN                 NaN             NaN
8  S0212353    others          1.0                 NaN             1.0

我希望根据以下内容cols = ['black metal', 'non-ferrous metals', 'precious metal']1s填充列customized_dict

customized_dict = {
    'black metal': ['iron ore', 'coke'], 
    'non-ferrous metals': ['copper', 'aluminum'],
    'precious metal': ['gold', 'silver']
                   }

请注意,键来自 in 的列名df1values来自productsin的内容df1

所以我的问题是如何获得以下输出:

         id  products  black metal  non-ferrous metals  precious metal
0  M0066350    copper          NaN                 1.0             NaN
1  M0066352  aluminum          NaN                 1.0             NaN
2  M0066353      gold          NaN                 NaN             1.0
3  M0066354    silver          NaN                 NaN             1.0
4  S0200837   soybean          NaN                 NaN             NaN
5  S0212350     Apple          NaN                 NaN             NaN
6  S0212351  iron ore          1.0                 NaN             NaN
7  S0212352      coke          1.0                 NaN             NaN
8  S0212353    others          1.0                 NaN             1.0

编辑:列中有重复的新数据products

    id  products  black metal  non-ferrous metals  precious metal
0  S0212350     Apple          NaN                 NaN             NaN
1  M0066352  aluminum          NaN                 1.0             NaN
2  S0212352      coke          1.0                 NaN             NaN
3  S0212354      coke          1.0                 NaN             NaN
4  M0066350    copper          NaN                 1.0             NaN
5  M0066353      gold          NaN                 NaN             1.0
6  S0212351  iron ore          1.0                 NaN             NaN
7  S0212353    others          1.0                 NaN             1.0
8  M0066354    silver          NaN                 NaN             1.0
9  S0200837   soybean          NaN                 NaN             NaN
莫兹韦

在列上使用一个简单的循环和update

customized_dict = {
    'black metal': ['iron ore', 'coke'], 
    'non-ferrous metals': ['copper', 'aluminum'],
    'precious metal': ['gold', 'silver']
                   }
df.update(df.iloc[:,2:].apply(lambda c: c[df['products']
                                         .isin(customized_dict[c.name])]
                                         .fillna(1)))

输出:

         id  products  black metal  non-ferrous metals  precious metal
0  M0066350    copper          NaN                 1.0             NaN
1  M0066352  aluminum          NaN                 1.0             NaN
2  M0066353      gold          NaN                 NaN             1.0
3  M0066354    silver          NaN                 NaN             1.0
4  S0200837   soybean          NaN                 NaN             NaN
5  S0212350     Apple          NaN                 NaN             NaN
6  S0212351  iron ore          1.0                 NaN             NaN
7  S0212352      coke          1.0                 NaN             NaN
8  S0212353    others          1.0                 NaN             1.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据字典填充选定列的 NaN,其键是列名,值是 Python 中另一列的内容

Python函数根据另一列填充nan值

python pandas-根据另一列的内容将列中的值更改为布尔值

创建一列,其值是python中另一列范围的最大值

如何根据python中的另一列填充NA值

Pandas / Python:根据另一列中的值设置一列的值

根据另一列(Python,Pandas)中的值删除一列的重复项

Python熊猫根据另一列的条件填充缺失值(NaN)

根据Pandas中另一列的值范围汇总一列的内容

如何根据另一列中的值填充列?

检查一列中的值是否在Python中另一列的间隔值中

如何根据另一列中的值填充另一列中的值?

将一列值填充到从Python的多列中随机选择的另一列值

一列中的Python Shift值基于另一列中的Nan或布尔值

Python:为另一列中的单个值显示一列中的多个值

Pandas 基于另一列 python 获取一列中的唯一值

根据另一列的值在 python 文件中添加一个额外的列

根据另一列pandas python的值在python中添加新列

通过另一列(python)移动熊猫中的值

如何根据CSV文件python中另一列中的值将json数据写入一列

Python Pandas DataFrame检查一列的值是否在另一列表中

在csv文件python中获取另一列的一列的值

根据数组的另一列在一列中聚合最小值最大值-Python

用pandas数据框中的另一列内容填充NaN列

如何根据另一列中的值填充组中的 np.nan 列?

根据某一列过滤行,然后检查另一列的值是否在Python的特定列表中

根据Python另一列中的组类型检查一列的分布和值计数

根据Pandas中另一列的值添加新列(python)

Excel公式根据另一列中的值填充一列