首页 > 解决方案 > 字典理解失败 - Python 3.6.x

问题描述

我正在尝试编写一个dict理解,dictk,vcolumn_title, # of null values in that columnpandas df.

我有以下内容: df1_null_dict = {c:df1.c.isnull().sum() for c in df1}

以下是如何在 Python 中构建 dict 理解的示例。

但是,我得到:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-5-a4c7d72985f6> in <module>
----> 1 df1_null_dict = {c:df1.c.isnull().sum() for c in df1}
      2 df2_null_dict = {c:df2.c.isnull().sum() for c in df2}

<ipython-input-5-a4c7d72985f6> in <dictcomp>(.0)
----> 1 df1_null_dict = {c:df1.c.isnull().sum() for c in df1}
      2 df2_null_dict = {c:df2.c.isnull().sum() for c in df2}

c:\python367-64\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   5137             if self._info_axis._can_hold_identifiers_and_holds_name(name):
   5138                 return self[name]
-> 5139             return object.__getattribute__(self, name)
   5140 
   5141     def __setattr__(self, name: str, value) -> None:

AttributeError: 'DataFrame' object has no attribute 'c'

如何使用 dict 理解来实现我想要的结果?

标签: pythonpython-3.xpandasdataframedictionary

解决方案


[]通过很好地处理变量来使用替代选择:

df1 = pd.DataFrame({
         'C':[np.nan,8,9,4,np.nan,np.nan],
         'D':[1,3,5,np.nan,1,0],
         'E':[np.nan,3,6,9,2,np.nan],

})

df1_null_dict = {c:df1[c].isnull().sum() for c in df1}
print (df1_null_dict)
{'C': 3, 'D': 1, 'E': 2}

替代方法是创建Series并转换为字典:

df1_null_dict = df1.isnull().sum().to_dict()
print (df1_null_dict)
{'C': 3, 'D': 1, 'E': 2}

推荐阅读