python - 根据数据框中的现有列添加新列,给出 NaN 值
问题描述
我想根据数据框的现有列添加列。框架包含 5 列。我需要用数值替换类别列。基于此,我需要添加'Class'
列并根据上述条件分配值 0 或 1。
Desired result:
File Task Category Class
0 g0pA_taska.txt a 0 0
1 g0pA_taskb.txt b 3 1
2 g0pA_taskc.txt c 2 1
3 g0pA_taskd.txt d 1 1
4 g0pA_taske.txt e 0 0
...
...
99 orig_taske.txt e -1 -1
plagiarism_df.replace({'Category' : {'non':0,'heavy':1,'light':2,'cut':3,'orig':-1}})
plagiarism_df.loc[plagiarism_df['Category']==0, 'Class'] = 0
plagiarism_df.loc[plagiarism_df['Category']==1, 'Class'] = 1
plagiarism_df.loc[plagiarism_df['Category']==2, 'Class'] = 1
plagiarism_df.loc[plagiarism_df['Category']==3, 'Class'] = 1
plagiarism_df.loc[plagiarism_df['Category']==-1,'Class'] = 1
解决方案
或者,您可以使用 map 函数,然后应用 lambda 来获得所需的结果:
plagiarism_df['Category'] = plagiarism_df['Category'].map({ 'non': 0, 'heavy': 1, 'light': 2, 'cut': 3, 'orig': -1})
plagiarism_df['Class'] = plagiarism_df['Category'].apply(lambda x: 1 if x in [1,2,3,-1] else 0)
推荐阅读
- javascript - 将背景图像设置为全屏 React
- c++ - 我应该始终编码哪些字符?
- javascript - 想要获取实例数而不是字符数的innerText的长度条件
- android - 如何从 android 手机发送图像以佩戴 os watch?
- java - 如何使用 Java 在 Swing GUI 中单击按钮时打开一个新窗口
- vhdl - ModelSim 错误加载设计只是一个小小的 hello world 程序?
- json - UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte while inserting json data to database
- ios - 使用 bundle 解码本地 json 文件的预览过程似乎已崩溃
- javascript - 带瓦片源的三盒
- unit-testing - 从服务器渲染 html 页面后的客户端测试