有条件地更新pandas列对不在字符串列上工作的内容

时间:2017-12-01 19:35:58

标签: python-3.x pandas numpy

我使用Python 3.6并将所有软件包更新。

我有一个df,其中包含5个针对Oracle数据库的SQL语句生成的行。其中一列由listagg() oracle函数生成,该函数返回一个字符串列。

我需要根据listagg列的内容更新另一列,而我无法更新。

以下是我所做的,但它始终将其设置为N' N' N' N'

listagg_res['H_FLAG'] = np.where('H' in listagg_res['PGM_LIST'], 'Y', 'N' )

listagg_res['H_FLAG'] = np.where(np.isin(listagg_res['PGM_LIST'], 'H'), 'Y', 'N' )

listagg_res['H_FLAG'] = np.where(listagg_res['PGM_LIST'].isin(['H']), 'Y', 'N' )

有谁可以指出我在这里失踪了什么?感谢

编辑:添加了df.isin()尝试。仍然没有工作,把它全部设置为N' N' N' N'而不管。

编辑:这是我的数据和H_FLAG的一个示例,因为它应该设置

+-------------+--------+
|   PGM_ID    | H_FLAG |
+-------------+--------+
| 'H,Z,T,G,H' | Y      |
| 'Z,T,G'     | N      |
| 'Z'         | N      |
| 'H'         | Y      |
+-------------+--------+

1 个答案:

答案 0 :(得分:1)

你能试试吗?

listagg_res['H_FLAG'] = np.where(listagg_res['PGM_LIST'].str.contains('H'), 'Y', 'N' )