我是熊猫和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
据我所知,为什么这不能正常工作,所以应该能够像上面那样处理数据框。
答案 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