Python 替换数据帧中大量项的有效方法

Python 替换数据帧中大量项的有效方法,python,pandas,dataframe,conceptual,Python,Pandas,Dataframe,Conceptual,我正在为工作创建一个自动化程序,自动生成月末报告。我遇到的挑战是如何高效地进行大量替换,而不需要for循环和一堆if语句 我有一个大约113个条目的文件,它告诉我哪些条目需要替换为另一个条目 计量单位 实际计量单位 0 毫升 3. 毫升 4. 联合国 7. 毫升 11 毫升 12 毫升 19 毫升 55 毫升 4U GR 熊猫可能会抛出警告/错误消息,例如“序列的真值不明确…” 我不确定您想达到什么目的,但为了让您开始,如果您想修改“Uom”列,您可以执行以下操作: mask = df[&quo

我正在为工作创建一个自动化程序,自动生成月末报告。我遇到的挑战是如何高效地进行大量替换,而不需要for循环和一堆if语句

我有一个大约113个条目的文件,它告诉我哪些条目需要替换为另一个条目

计量单位 实际计量单位 0 毫升 3. 毫升 4. 联合国 7. 毫升 11 毫升 12 毫升 19 毫升 55 毫升 4U GR
熊猫可能会抛出警告/错误消息,例如“序列的真值不明确…”

我不确定您想达到什么目的,但为了让您开始,如果您想修改“Uom”列,您可以执行以下操作:

mask = df["Uom"] == 3 | df["Uom"] == 7 | df["Uom"] == 11
df.loc[mask, "Uom"] = "ML"
df.loc[df["Uom"] == 4, "Uom"] = "UN"

我将从映射df(我假设您发布的数据帧称为映射df)创建一个字典,然后在主数据帧中
map
结果

这样,您就不需要手动声明任何内容,因此即使在113行映射_df中添加了新行,代码仍然可以顺利运行:

# Create a dictionary with your Uom as Key
d = dict(zip(mapping_df.Uom,mapping_df['Actual UOM']))

# And then use map on your main_df Uom column 
main_df['Actual Uom'] = main_df['Uom'].map(d) 

类似于上面的东西应该可以工作。

您可以
将上面的(作为一个系列)映射为映射参数,或者您可以使用列表理解解决这个问题,很简单,请注意,
计量单位
将是
对象
而不是数字,因为至少有一个
4U
值啊如果给出了
实际计量单位
df,这就是方法。我的印象是实际计量单位是期望的输出。我也不确定。如果没有给予,那么你的方式就是前进的方式。让我们等待OP的输入。是的,我发布的表是给我的前10行,我应该用它编辑另一个文件。所以,他们给我的表格只是一个可能性列表,以及每个可能性对应的内容。听起来这是我一直在寻找的解决方案,所以我将尝试一下。将此标记为正确答案,因为它工作得非常好!