熊猫基于代码更改行数据

时间:2018-10-30 00:13:26

标签: python pandas

我是熊猫和python的初学者,试图学习它。
我想遍历熊猫行,以应用简单的编码逻辑。
我只需要简单的编码逻辑,而不是花哨的映射功能。
因此,以后我也可以轻松地将其适应其他编码逻辑规则。

在我的数据帧dc中,
我想检查列AgeUnkown == 1(还是>0
如果是这样,则应将列Age的值移动到AgeUnknown
然后使Age等于0.0
我尝试了以下代码的各种组合,但无法正常工作。

# using a row  reference #########
for index, row in dc.iterrows():
   r = row['AgeUnknown']
   if (r>0):
     w = dc.at[index,'Age']
     dc.at[index,'AgeUnknown']=w
     dc.at[index,'Age']=0

另一种尝试

for index in dc.index:
  r = dc.at[index,'AgeUnknown'].[0]  # also tried .sum  here
    if (r>0):
      w= dc.at[index,'Age']
      dc.at[index,'AgeUnknown']=w
      dc.at[index,'Age']=0

也尝试过

  if(dc[index,'Age']>0    #wasnt allowed either

据我所知,为什么这不能正常工作,所以应该能够像上面那样处理数据框。

1 个答案:

答案 0 :(得分:0)

我知道您要求一个涉及迭代df的解决方案,但我想提供一个我认为更传统的解决方案。

一个解决问题的非迭代解决方案是这样的-1)获取所有符合条件的索引2)将df的那些索引设置为所需的值。

# indexes where column AgeUnknown is >0
inds = dc[dc['AgeUnknown'] > 0].index.tolist()
# change the indexes of AgeUnknown to to the Age column
dc.loc[inds, 'AgeUnknown'] = dc.loc[inds, 'Age']
# change the Age to 0 at those indexes
dc.loc[inds, 'Age'] = 0