根据python中的另一列映射列值

时间:2018-05-28 07:52:59

标签: python pandas openpyxl xlsxwriter

我正在尝试更改列值依赖于其行中的其他列,然后使用ADSL列作为我的键将其合并到现有的Excel文件中。

我有这样的数据:

ADSL     Status     Result
2/134    WO         No Server Answer
1/239    WO         Faulty
2/94     FA         Number
2/321    SP         Voltage

这是一个实际数据,Status列有三个可能的值[WO,FA,SP],每个值都具有相等的Result值。

示例:

Status                  Equivalent Result Value

                        Battery Tone
                        Engage
  WO                    No Dial Tone
                        No Server Answer
                        No Voltage
                        Number
  SP                    Voltage
  FA                    Faulty
                        Vacant

现在实际上Status列未根据其等效Result值获得正确的值。 (见上面的数据)

我尝试做的是根据status列中的等值来更正Result

在python中执行此操作最简单有效的方法是什么?我不是在寻找特定的图书馆。任何帮助将不胜感激。干杯!

1 个答案:

答案 0 :(得分:1)

我认为Series需要map

df2['Status'] = df2['Status'].map(df1.set_index('Result')['Status'])

如果某些值不匹配,则可以替换原始的非NaN值:

df2['Status'] = df2['Status'].map(df1.set_index('Result')['Status']).fillna(df2['Status'])