如何选择/过滤列表为空的Pandas列?

问题描述

我试图用空单元格值替换脚本输出中每次出现的空列表[],但都在努力确定它是什么对象。

因此,运行.to_excel后的数据输出如下:

enter image description here

现在数据最初以JSON格式存在,我正在使用data_normalized = pd.json_normalize(data)对其进行规范化。我正在尝试使用filtered = data_normalized.loc[data_normalized['focuses'] == []]过滤掉出现的空列表,但是那没有用。我也尝试过filtered = data_normalized.loc[data_normalized['focuses'] == '[]']

如果有帮助,列focuses的dtype为Object。因此,我对如何选择此数据感到困惑。

最终,我只想运行data_normalized.replace('[]',''),但要更新第一个参数,以便我可以正确选择空列表。

解决方法

您可以尝试使用dfpd.DataFrame.astype(str)转换为字符串类型,然后使用regex参数为False的replace

df.astype(str).replace('[]','',regex=False)

示例:

df=pd.DataFrame({'a':[[],1,2,3]})

df.astype(str).replace('[]',regex=False)

   a
0   
1  1
2  2
3  3
,

我认为空集被认为是缺失数据。因此,当您加载数据集时,您可以进行处理

这可能会帮助

https://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html

,

我对熊猫的经验确实很少,但是由于您无法识别对象,请尝试将获取的列表转换为字符串,然后将其与“ []”进行比较

例如,尝试使用此

filtered = data_normalized.loc[string(data_normalized['focuses']) == '[]']