我正在尝试运行我认为简单的代码来消除所有NaN的任何列,但无法使其正常工作(axis = 1
消除行时效果很好):
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':[1,2,np.nan,np.nan], 'b':[4,np.nan,6,np.nan], 'c':[np.nan, 8,9,np.nan], 'd':[np.nan,np.nan,np.nan,np.nan]})
df = df[df.notnull().any(axis = 0)]
print df
完整错误:
raise IndexingError('Unalignable boolean Series provided as 'pandas.core.indexing.IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match
预期产量:
a b c
0 1.0 4.0 NaN
1 2.0 NaN 8.0
2 NaN 6.0 9.0
3 NaN NaN NaN
您需要loc
,因为按列过滤:
print (df.notnull().any(axis = 0))
a True
b True
c True
d False
dtype: bool
df = df.loc[:, df.notnull().any(axis = 0)]
print (df)
a b c
0 1.0 4.0 NaN
1 2.0 NaN 8.0
2 NaN 6.0 9.0
3 NaN NaN NaN
或过滤列,然后按[]
:
print (df.columns[df.notnull().any(axis = 0)])
Index(['a', 'b', 'c'], dtype='object')
df = df[df.columns[df.notnull().any(axis = 0)]]
print (df)
a b c
0 1.0 4.0 NaN
1 2.0 NaN 8.0
2 NaN 6.0 9.0
3 NaN NaN NaN
或dropna
使用参数how='all'
删除NaN
仅由s填充的所有列:
print (df.dropna(axis=1, how='all'))
a b c
0 1.0 4.0 NaN
1 2.0 NaN 8.0
2 NaN 6.0 9.0
3 NaN NaN NaN
本文向大家介绍pandas 布尔索引,包括了pandas 布尔索引的使用技巧和注意事项,需要的朋友参考一下 示例 可以使用布尔数组选择数据框的行和列。 有关熊猫文档的更多信息。
问题内容: 这是我遇到错误的方式: 类型为,其中包含行索引列表。所有这些行索引都属于。 这是我需要过滤的条件。 如果我分别执行以下命令,则不会收到任何警告: 但是,如果将它们放在一起,则会收到警告消息(但可以看到结果): 布尔系列键将重新索引以匹配DataFrame索引 此错误消息是什么意思?它会影响返回的结果吗? 问题答案: 尽管有警告,您的方法仍然可以使用,但是最好不要依赖隐式,不清楚的行为。
问题内容: 这可能是一个非常愚蠢的问题,但是对数据库表中的布尔字段建立索引是否会有很多好处? 在常见情况下,例如标记为“无效”的“软删除”记录,因此大多数查询都包含,这将有助于对该字段进行单独索引,还是应将其与其他常见搜索字段组合在一起?不同的索引? 问题答案: 没有。 您可以对要搜索的字段具有较高的选择性/基数进行索引。几乎所有表都消除了布尔字段的基数。如果有的话,它将使您的写入速度变慢(降低的
In[1]: import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline 1. 计算布尔值统计信息 # 读取movie,设定行索引是movie_title In[2]: pd.options.display.max_colum
In[1]: import pandas as pd import numpy as np 1. 检查索引 # 读取college数据集,提取所有的列 In[2]: college = pd.read_csv('data/college.csv') columns = college.columns columns Out[2]: Index([
问题内容: 我在可为空的列上有一个索引,我想选择所有它的值,如下所示: 在说明计划中,我看到了一个提示(即使提示也无济于事) 确实使用索引… 我用谷歌搜索发现索引中没有空条目,因此第一个查询不能使用索引。 我的问题很简单: 为什么索引中没有空条目? 问题答案: 默认情况下,关系数据库会忽略NULL值(因为关系模型说NULL表示“不存在”)。因此,索引不存储NULL值,因此,如果您在SQL语句中具有