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

时间:2018-06-12 14:22:16

标签: python pandas

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

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

我想将文字box附加到df['item'],其中项目不为空,因此新的df将如下所示:

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

1 个答案:

答案 0 :(得分:7)

对于我没有检查NaN的工作解决方案:

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

检查NaN的解决方案:

notnaloc

一起使用
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'])