Pandas 如何提取具有条件的行

Pandas 如何提取具有条件的行,pandas,Pandas,数据框在下面 id,validity 1941079,{'NT': 2017-02-10, 'T': None} 326809,None 1935569,{'NT': None, 'T': None} 1932997,{'NT': '2017-02-13', 'T': None} 需要提取NT不是无的id 预期结果如下 df['not_none] 1941079 1932997 与和一起使用,用于过滤器: 如有必要,将字符串repr转换为字典使用带有的自定义函数try except: imp

数据框在下面

id,validity
1941079,{'NT': 2017-02-10, 'T': None}
326809,None
1935569,{'NT': None, 'T': None}
1932997,{'NT': '2017-02-13', 'T': None}
需要提取
NT
不是无的id 预期结果如下

df['not_none]

1941079
1932997
与和一起使用,用于过滤器:

如有必要,将字符串repr转换为字典使用带有
的自定义函数try except

import ast

def parse_to_dict(x):
    try:
        return ast.literal_eval(x)
    except:
        return None

df['validity'] = df['validity'].apply(parse_to_dict)

s = df.loc[df['validity'].str.get('NT').notna(), 'id']
print (s)
0    1941079
3    1932997
Name: id, dtype: int64
请点击这个链接。