想象一下,我有一个肮脏的数据框架,里面有员工的ID和每个国家的合同相关信息。
此数据框的某些列是LOV列(取决于国家/地区,某些列仅是一个国家/地区的LOV,其他列是其中的部分或全部),某些LOV列是强制性的,而有些则不是(仅用于了解是否接受空白值)。
我们需要使用另一个Map Dataframe 进行检查:
- 如果所提供的值存在于Map Dataframe 中,
- 如果是,则用 Dataframe 上的对应代码替换所提供的值。
如果提供的值不在列表中,则在主 Dataframe 上创建一个名为“Errors”的新列,其中它表示出错的列的名称(如果多于1列,则可以将名称保存在该列的列表中)。
从这个dataframe:
ID Country Contract Type
1 CZ Permanent BOFF
1 ES Fixed-term .
2 CZ Contractor Front-Office
3 PT Permanent
4 PT 2022-01-01 Employee
4 PT Fixed-term Office
4 ES Employee
5 SK Permanent Employee
使用此Map:
Country Field Values Code Mandadory
CZ Contract Permanent PE Yes
CZ Contract Fixed-term FX Yes
CZ Contract Contractor CT Yes
ES Contract Permanent PERMA No
SK Contract Permanent PER-01 Yes
SK Contract Fixed-term FIX-01 Yes
ES Type Office OFF Yes
CZ Type Back-Office BOFF Yes
CZ Type Front-Office FOFF Yes
PT Type Employee EMP No
PT Type Front-Office FRONT No
会导致这个dataframe:
ID Country Contract Type Errors
1 CZ PE BOFF ['Type']
1 ES Fixed-term . ['Contract','Type']
2 CZ CT FOFF
3 PT Permanent
4 PT 2022-01-01 FRONT ['Type']
4 PT Fixed-term Office ['Type']
4 ES Employee ['Contract','Type']
5 SK PER-01 Employee
非常感谢您的支持!
1条答案
按热度按时间jtoj6r0c1#
使用您提供的 Dataframe :
下面是使用Pandas merge和apply执行此操作的一种方法:
然后: