python – 仅将文本附加到非空值pandas Dataframe

我有一个看起来像这样的df:

|  id | qty  | item |
+-----+------+------+
| 001 |  700 | CB04 |
| 002 |  500 |      |
| 003 | 1500 | AB01 |

我想将文本框附加到df [‘item’],其中items不为null,因此New df将如下所示:

|  id | qty  |   item   |
+-----+------+----------+
| 001 |  700 | CB04 box |
| 002 |  500 |          |
| 003 | 1500 | AB01 box |

最佳答案 对我来说工作解决方案没有检查NaNs:

df['item'] += ' box'
print (df)
   id   qty      item
0   1   700  CB04 box
1   2   500       NaN
2   3  1500  AB01 box

检查NaNs的解决方案:

使用notna和loc

df.loc[df['item'].notna(), 'item'] += ' box'
#for oldier pandas versions
#df.loc[df['item'].notnull(), 'item'] += ' box'
print (df)
   id   qty      item
0   1   700  CB04 box
1   2   500       NaN
2   3  1500  AB01 box

numpy.where

df['item'] = np.where(df['item'].notna(), df['item'] + ' box',  df['item'])
#df['item'] = np.where(df['item'].notnull(), df['item'] + ' box',  df['item'])
点赞