我对编码很陌生,最近我在工作中完成了一个非常小的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
我理解如何计算它们等等,但我希望看到某种最终列表。
谢谢!
答案 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