我使用python2.7.3和Pandas版本0.12.0。
我希望删除带有NaN索引的行,以便只有有效的site_id值。
print df.head()
special_name
site_id
NaN Banana
OMG Apple
df.drop(df.index[0])
TypeError: 'NoneType' object is not iterable如果我试着放弃一个范围,就像这样:
df.drop(df.index[0:1])我知道这个错误:
AttributeError: 'DataFrame' object has no attribute 'special_name'发布于 2013-10-29 23:57:13
我发现最简单的方法是重置索引,删除NaNs,然后再重新设置索引。
In [26]: dfA.reset_index()
Out[26]:
index special_name
0 NaN Apple
1 OMG Banana
In [30]: df = dfA.reset_index().dropna().set_index('index')
In [31]: df
Out[31]:
special_name
index
OMG Banana发布于 2015-11-26 12:47:13
对于熊猫版本>= 0.20.0,您可以:
df = df[df.index.notnull()]旧版本:
df = df[pandas.notnull(df.index)]要把它分解:
notnull生成一个布尔掩码,例如[False, False, True],其中True表示对应位置为null的值(numpy.nan或None)。然后使用df[boolean_mask]选择其索引与掩码中的真值相对应的行。
发布于 2016-10-21 16:14:07
没有一个答案对我是百分之百有效的。以下是起作用的原因:
In [26]: print df
Out[26]:
site_id special_name
0 OMG Apple
1 NaN Banana
2 RLY Orange
In [27]: df.dropna(inplace=True)
Out[27]:
site_id special_name
0 OMG Apple
2 RLY Orange
In [28]: df.reset_index(inplace=True)
Out[28]:
index site_id special_name
0 0 OMG Apple
1 2 RLY Orange
In [29]: df.drop('index', axis='columns', inplace=True)
Out[29]:
site_id special_name
0 OMG Apple
1 RLY Orangehttps://stackoverflow.com/questions/19670904
复制相似问题