在pandas数据框架中用NaN替换空列表[英] replace empty list with NaN in pandas dataframe

本文是小编为大家收集整理的关于在pandas数据框架中用NaN替换空列表的处理方法,想解了在pandas数据框架中用NaN替换空列表的问题怎么解决?在pandas数据框架中用NaN替换空列表问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在尝试用 NaN 值替换我的数据中的一些空列表.但是如何在表达式中表示一个空列表呢?

import numpy as np
import pandas as pd
d = pd.DataFrame({'x' : [[1,2,3], [1,2], ["text"], []], 'y' : [1,2,3,4]})
d

    x           y
0   [1, 2, 3]   1
1   [1, 2]      2
2   [text]      3
3   []          4



d.loc[d['x'] == [],['x']] = d.loc[d['x'] == [],'x'].apply(lambda x: np.nan)
d

ValueError: Arrays were different lengths: 4 vs 0

而且,我想通过使用 d[d['x'] == ["text"]] 选择 [text] 并出现 ValueError: Arrays were different lengths: 4 vs 1 错误,但使用 d[d['y'] == 3] 选择 3 是正确的.为什么?

推荐答案

如果您希望将列 x 中的空列表替换为 numpy nan 的,您可以执行以下操作:

d.x = d.x.apply(lambda y: np.nan if len(y)==0 else y)

如果您想在等于 ['text'] 的行上对数据框进行子集化,请尝试以下操作:

d[[y==['text'] for y in d.x]]

我希望这会有所帮助.

本文地址:https://www.itbaoku.cn/post/1727862.html