![](/img/trans.png)
[英]NaN values when new column is added to pandas DataFrame based on an existing column data
[英]Adding the new column based on existing column in dataframe giving NaN values
我想基於數據框的現有列添加列。 框架包含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
您沒有修改DataFrame, replace
返回一個新的DataFrame,您必須為其分配: plagiarism_df = plagiarism_df.replace({'Category': { 'non': 0, 'heavy': 1, 'light': 2, 'cut': 3, 'orig': -1 }})
或使用que param inplace inplace = True
來修改DataFrame對象,如下所示:
plagiarism_df.replace({'Category':{ 'non': 0, 'heavy': 1, 'light': 2, 'cut': 3, 'orig': -1}}, inplace=True)
或者,您可以使用地圖函數,然后應用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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.