gpt4 book ai didi

python - 高级 Pandas : How to apply NOTNULL in pandas chaining?

转载 作者:行者123 更新时间:2023-12-01 01:12:12 25 4
gpt4 key购买 nike

我在使用 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
<小时/>

对于特定的 drop nan

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

关于python - 高级 Pandas : How to apply NOTNULL in pandas chaining?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54754452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com