我有一个带有日期时间索引的数据框,如下所示:
我想删除所有具有NaN值的行,所以我过去只使用Pandas.DataFrame.dropna
删除所有行但是当我将它用于带索引的数据帧时会出现以下错误:
C:\Users\nandhos\Anaconda2\lib\site-packages\pandas\core\frame.pyc in dropna(self, axis, how, thresh, subset, inplace)
3067 raise TypeError('must specify how or thresh')
3068
-> 3069 result = self.take(mask.nonzero()[0], axis=axis, convert=False)
3070
3071 if inplace:
C:\Users\nandhos\Anaconda2\lib\site-packages\pandas\core\generic.pyc in take(self, indices, axis, convert, is_copy, **kwargs)
1926 new_data = self._data.take(indices,
1927 axis=self._get_block_manager_axis(axis),
-> 1928 convert=True, verify=True)
1929 result = self._constructor(new_data).__finalize__(self)
1930
C:\Users\nandhos\Anaconda2\lib\site-packages\pandas\core\internals.pyc in take(self, indexer, axis, verify, convert)
4009 new_labels = self.axes[axis].take(indexer)
4010 return self.reindex_indexer(new_axis=new_labels, indexer=indexer,
-> 4011 axis=axis, allow_dups=True)
4012
4013 def merge(self, other, lsuffix='', rsuffix=''):
C:\Users\nandhos\Anaconda2\lib\site-packages\pandas\core\internals.pyc in reindex_indexer(self, new_axis, indexer, axis, fill_value, allow_dups, copy)
3895 new_blocks = [blk.take_nd(indexer, axis=axis, fill_tuple=(
3896 fill_value if fill_value is not None else blk.fill_value,))
-> 3897 for blk in self.blocks]
3898
3899 new_axes = list(self.axes)
C:\Users\nandhos\Anaconda2\lib\site-packages\pandas\core\internals.pyc in take_nd(self, indexer, axis, new_mgr_locs, fill_tuple)
1044 fill_value = fill_tuple[0]
1045 new_values = algos.take_nd(values, indexer, axis=axis,
-> 1046 allow_fill=True, fill_value=fill_value)
1047
1048 if new_mgr_locs is None:
C:\Users\nandhos\Anaconda2\lib\site-packages\pandas\core\algorithms.pyc in take_nd(arr, indexer, axis, out, fill_value, mask_info, allow_fill)
1469 func = _get_take_nd_function(arr.ndim, arr.dtype, out.dtype, axis=axis,
1470 mask_info=mask_info)
-> 1471 func(arr, indexer, out, fill_value)
1472
1473 if flip_order:
pandas\_libs\algos_take_helper.pxi in pandas._libs.algos.take_2d_axis1_float32_float32 (pandas\_libs\algos.c:106602)()
ValueError: Big-endian buffer not supported on little-endian compiler
当索引只是数字时,不会出现该错误,如下所示:
答案 0 :(得分:0)
尝试使用isfinite()代替:
import numpy as np
df = df[np.isfinite(df['pwv'])]