Python 高级熊猫:如何在熊猫链接中应用NOTNULL?

Python 高级熊猫:如何在熊猫链接中应用NOTNULL?,python,pandas,Python,Pandas,我在使用TMDB数据集进行一些数据操作时遇到了以下问题 假设我有一个数据框,如下所示: import pandas as pd import ast df = pd.DataFrame({'rank': [1,2,3], 'belongs': [ "{'id': 1, 'name': 'Toy Story'}", "{'id': 3, 'name': 'Grumpy Old Men'}",

我在使用TMDB数据集进行一些数据操作时遇到了以下问题

假设我有一个数据框,如下所示:

import pandas as pd
import ast

df = pd.DataFrame({'rank': [1,2,3],
                 'belongs': [ "{'id': 1, 'name': 'Toy Story'}",
                              "{'id': 3, 'name': 'Grumpy Old Men'}",
                             np.nan
                            ]})

print(df[df.belongs.notnull()])
当我按顺序运行命令时,我得到了所需的特许权名称:

fran = df['belongs'].copy()
fran = fran[fran.notnull()]
fran = fran.apply(ast.literal_eval)
fran = fran.apply(lambda x: x['name'] if isinstance(x, dict) else np.nan)
fran = fran[fran.notnull()]

fran

0         Toy Story
1    Grumpy Old Men
如何将这些命令连成一行

我试过这个:

(df['belongs'].copy()
.apply( lambda x: x[x.notnull()])
.apply(ast.literal_eval)
.apply(lambda x: x['name'] if isinstance(x, dict) else np.nan)
.apply( lambda x: x[x.notnull()])
)
给出了错误:

AttributeError: 'str' object has no attribute 'notnull'
我尝试将x更改为pd.Series(x),但有些错误会持续出现

如何链接给定的操作?

在一行中链接

df['belongs'].copy().loc[lambda x : x.notnull()].apply(ast.literal_eval).\
      apply(lambda x: x['name'] if isinstance(x, dict) else np.nan)
Out[205]: 
0         Toy Story
1    Grumpy Old Men
Name: belongs, dtype: object

具体的落差是多少

 df['belongs'].copy().dropna()