如何用Python将pandas DataFrame中的[]替换为NaN?
将DataFrame中的空列表/字符串
'[]'替换为NaN 下面分两种常见场景给出解决方案:
1. 处理字符串形式的'[]'
如果你的species列中存储的是字符串'[]'(对应测试代码的场景),直接用replace()方法即可快速替换:
import pandas as pd import numpy as np # 测试数据 df = pd.DataFrame({ 'molecule': ['a','b','c','d','e'], 'species' : ['horse','cat','[]','frog','lion']}) # 替换字符串'[]'为NaN df['species'] = df['species'].replace('[]', np.nan)
2. 处理真正的空列表对象[]
如果species列中的空值是Python列表对象[](对应你最初展示的DataFrame场景),可以用apply()结合条件判断替换:
import pandas as pd import numpy as np # 测试数据 df = pd.DataFrame({ 'molecule': ['a','b','c','d','e'], 'species' : ['dog', 'horse', [], 'pig', []]}) # 替换空列表为NaN df['species'] = df['species'].apply(lambda x: np.nan if x == [] else x)
通用兼容方案
如果不确定数据是字符串还是列表类型,可以合并两种判断逻辑:
df['species'] = df['species'].apply(lambda x: np.nan if (x == [] or x == '[]') else x)
内容的提问来源于stack exchange,提问作者startedtocode
相关产品推荐
相关产品推荐

