识别缺失值并返回包含这些值的列表

时间:2017-11-01 08:42:27

标签: python excel pandas csv

我对编码很陌生,最近我在工作中完成了一个非常小的Pandas课程,本课程的一部分是考虑一个我们希望改进的项目。我希望能够从CSV或Excel文件中识别表中的缺失值,然后列出这些缺失值。 导入的CSV文件示例:

  

公司2016 2015 2014 2013 2012 2011 2010

     

AAPL US 31 NaN 21.0 3.0 NaN 80.0 7

     

MSFT US 72 8.0 67.0 NaN 93.0 30.0 37

     

SNAP US 51 NaN NaN 7.0 33.0 16.0 44

     

FB US 49 56.0 33.0 97.0 NaN NaN 98

分为:

  

AAPL US,2015,2012

     

MSFT US,2013

     

SNAP US,2015,2014

     

FB US,2012,2011

我理解如何计算它们等等,但我希望看到某种最终列表。

谢谢!

1 个答案:

答案 0 :(得分:1)

首先set_index,按isnull检查NaN,然后按list生成apply并过滤:

df = (df.set_index('Company')
        .isnull()
        .apply(lambda x : x.index[x].tolist(), 1)
        .reset_index(name='val'))
print (df)
   Company           val
0  AAPL US  [2015, 2012]
1  MSFT US        [2013]
2  SNAP US  [2015, 2014]
3    FB US  [2012, 2011]

或者如果想要string s:

df = df.set_index('Company')
s = np.where(df.isnull(), ['{}, '.format(x) for x in df.columns], '')
df = pd.Series([''.join(x).strip(', ') for x in s], index=df.index).reset_index(name='val')
print (df)
   Company         val
0  AAPL US  2015, 2012
1  MSFT US        2013
2  SNAP US  2015, 2014
3    FB US  2012, 2011