Python 熊猫将行放在包含';na';

Python 熊猫将行放在包含';na';,python,pandas,Python,Pandas,我有一个数据框架,比如说,有4列[[['a','b','c','d']],我在其中添加另一列['total'],其中包含每行所有其他列的总和。然后,我添加另一个列['growth of total'],其中包含总量的增长率 [[['a'、'b'、'c'、'd']]中的某些值为空,导致['total']列对这些行无效。我可以使用df.dropna(how='any')轻松摆脱这些行 但是,我的增长率不仅对[['a'、'b'、'c'、'd']]中缺少值的行无效,而且对以下行无效。如何删除所有这些行?

我有一个数据框架,比如说,有4列
[[['a','b','c','d']]
,我在其中添加另一列
['total']
,其中包含每行所有其他列的总和。然后,我添加另一个列
['growth of total']
,其中包含总量的增长率

[[['a'、'b'、'c'、'd']]
中的某些值为空,导致
['total']
列对这些行无效。我可以使用df.dropna(how='any')轻松摆脱这些行


但是,我的增长率不仅对
[['a'、'b'、'c'、'd']]
中缺少值的行无效,而且对以下行无效。如何删除所有这些行?

我认为有一个选项符合您的要求:

In [76]: df = pd.DataFrame(np.arange(40).reshape(10,4))

In [77]: df.ix[1,2] = np.nan

In [78]: df.ix[6,1] = np.nan

In [79]: df['total'] = df.sum(axis=1, skipna=False)

In [80]: df
Out[80]:
    0   1   2   3  total
0   0   1   2   3      6
1   4   5 NaN   7    NaN
2   8   9  10  11     38
3  12  13  14  15     54
4  16  17  18  19     70
5  20  21  22  23     86
6  24 NaN  26  27    NaN
7  28  29  30  31    118
8  32  33  34  35    134
9  36  37  38  39    150

In [81]: df['growth'] = df['total'].iloc[1:] - df['total'].values[:-1]

In [82]: df
Out[82]:
    0   1   2   3  total  growth
0   0   1   2   3      6     NaN
1   4   5 NaN   7    NaN     NaN
2   8   9  10  11     38     NaN
3  12  13  14  15     54      16
4  16  17  18  19     70      16
5  20  21  22  23     86      16
6  24 NaN  26  27    NaN     NaN
7  28  29  30  31    118     NaN
8  32  33  34  35    134      16
9  36  37  38  39    150      16

IIUC正确的话,您可以使用
notnull
all
来屏蔽任何带有
NaN
的行以及
NaN
行之后的行:

In [43]:
df = pd.DataFrame({'a':[0,np.NaN, 2, 3,np.NaN], 'b':[np.NaN, 1,2,3,4], 'c':[0, np.NaN,2,3,4]})
df

Out[43]:
    a   b   c
0   0 NaN   0
1 NaN   1 NaN
2   2   2   2
3   3   3   3
4 NaN   4   4

In [44]:
df[df.notnull().all(axis=1) & df.shift().notnull().all(axis=1)]

Out[44]:
   a  b  c
3  3  3  3

你能不能不把它们填入df.fillna(0)?然后把它们加起来?我不知道你的意思。我已经处理了值为空的行。我的问题是,我还需要去掉带有空值的行后面的每一行。