繁体   English   中英

根据条件用一个python pandas dataframe列的值替换为另一个python pandas dataframe列的值

[英]Substitute the values of one python pandas dataframe column by values from another based on a condition

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

但是我收到一条有关轴的错误消息。

您可以将np.nan替换为空白,然后使用Combine_first

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

两件事情:

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

     dt.loc[<condition>, <column(s) returned>] 
  2. “ oldDistrict”的值不等于“ 13”-在“ schoolNum”中。 因此,您想要的全部是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM