我尝试为包含NaN值的每一行检索相应列的所有索引。
d=[[11.4,1.3,2.0, NaN],[11.4,1.3,NaN, NaN],[11.4,1.3,2.8, 0.7],[NaN,NaN,2.8, 0.7]] df = pd.DataFrame(data=d, columns=['A','B','C','D']) print df A B C D 0 11.4 1.3 2.0 NaN 1 11.4 1.3 NaN NaN 2 11.4 1.3 2.8 0.7 3 NaN NaN 2.8 0.7
我已经做了以下工作:
我想要的(理想情况下是列的名称)是这样的列表:
[ ['D'],['C','D'],['A','B'] ]
希望我能找到一种方法,而不必为每一行做每一列的测试
if df.ix[i][column] == NaN:
我正在寻找一种pandas方法来处理庞大的数据集。
提前致谢。
另一种方法是提取NaN行:
In [11]: df_null = df.isnull().unstack() In [12]: t = df_null[df_null] In [13]: t Out[13]: A 3 True B 3 True C 1 True D 0 True 1 True dtype: bool
这可以帮助您解决大部分问题,可能就足够了。 尽管使用该系列可能更容易:
In [14]: s = pd.Series(t2.index.get_level_values(1), t2.index.get_level_values(0)) In [15]: s Out[15]: 0 D 1 C 1 D 3 A 3 B dtype: object
例如,如果您想要列表(尽管我认为您不需要它们)
In [16]: s.groupby(level=0).apply(list) Out[16]: 0 [D] 1 [C, D] 3 [A, B] dtype: object