python - 如何在迭代时替换特定的数据框值?
问题描述
我有一个 df,其中第 4 列是犬种,我将其与犬种列表(breeds
)进行比较。如果该犬种不在犬种列表中,我想用“NaN”替换数据框中的值。逻辑是有效的,但我无法正确更换。这是怎么做到的?这是我迄今为止一直在尝试的:
for index, row in df_2.iterrows():
if not any(breed == row[3] for breed in breeds):
df_2.replace([row[3], 'NaN'], inplace = True)
这个例子提出了例外:ValueError: ('Invalid dtype for pad_1d [category]', 'occurred at index tweet_image_number')
. 第 3 列实际上在哪里tweet_image_number
,我不确定它为什么会出现在那里。
df的样本:
tweet_id jpg_url tweet_image_number breed_probability_1 p1_conf breed_probability_2 p2_conf breed_probability_3 p3_conf
0 43 666776908487630848 https://pbs.twimg.com/media/CUDeDoWUYAAD-EM.jpg 1 Seat Belt 0.375057 Miniature Pinscher 0.167175 Chihuahua 0.086951
1 1939 860563773140209665 https://pbs.twimg.com/media/C_FWL0vVwAA13N7.jpg 1 Cardigan 0.583936 Pembroke 0.055979 Beagle 0.045896
2 1471 779377524342161408 https://pbs.twimg.com/ext_tw_video_thumb/77937... 1 Sundial 0.170921 Cash Machine 0.060359 Maze 0.054981
我对格式感到抱歉,我不知道如何将数据框很好地复制到堆栈中
解决方案
我需要逃脱第二个循环,这解决了它:
for index, row in df_2.iterrows():
if not any(breed == row[3] for breed in breeds):
row[3] = 'NaN'
df_2.loc[index, 'breed_probability_1'] = row[3]