将一个数据帧列的值替换为基于条件的另一个数据帧列的值

2024-07-01 07:36:15 发布

您现在位置:Python中文网/ 问答频道 /正文

import pandas as pd
import numpy as np

dt=pd.DataFrame({'schoolNum':['12','13','14','13'],'oldDistrict':['A','B', 'C','B'],'newDistrict':['F',' ','G',' ']})

dt=pd.DataFrame({'schoolNum':['12','13','14','13'],'oldDistrict':['A','B', 'C','B'],'newDistrict':['F','B','G','B']})

我试过:

dt.ix[dt['oldDistrict']=='13', 'newDistrict']=dt.oldDistrict

但我收到一条关于axis的错误信息。你知道吗


Tags: importnumpydataframepandasasnpdtpd
2条回答

两件事:

  1. 要使用.loc而不是.ix:

    dt.loc[<condition>, <column(s) returned>]
    
  2. “oldDistrict”没有等于“13”的值-这些值在“schoolNum”中。所以你想要的是:

    dt.loc[dt['schoolNum']=='13', 'newDistrict'] = dt['oldDistrict']
    

你可以用np.nan公司然后先用联合收割机

dt = dt.replace({' ': np.nan})
dt['newDistrict'] = dt['newDistrict'].combine_first(dt['oldDistrict'])

退货

    newDistrict oldDistrict schoolNum
0   F           A           12
1   B           B           13
2   G           C           14
3   B           B           13

相关问题 更多 >

    热门问题