Python 如何真正过滤pandas数据集而不在任何地方留下Nans
假设我有一个巨大的Python 如何真正过滤pandas数据集而不在任何地方留下Nans,python,pandas,filter,Python,Pandas,Filter,假设我有一个巨大的DataFrame,其中只包含少数与我执行的过滤匹配的单元格。如何在一个新的数据帧中只得到与之匹配的值(以及它们的索引和列),而没有变成Nan的整个另一个dataframe。用dropna删除Nan只会删除整列或整行,filter用Nan替换不匹配项。 这是我的密码: 将numpy导入为np 作为pd进口熊猫 df=pd.DataFrame(np.random.random((10001000))) #这一个几乎充满了南 df[df如果需要其他格式的非缺失值,可以使用: np.
DataFrame
,其中只包含少数与我执行的过滤匹配的单元格。如何在一个新的数据帧中只得到与之匹配的值(以及它们的索引和列),而没有变成Nan的整个另一个dataframe
。用dropna
删除Nan只会删除整列或整行,filter
用Nan替换不匹配项。这是我的密码:
将numpy导入为np
作为pd进口熊猫
df=pd.DataFrame(np.random.random((10001000)))
#这一个几乎充满了南
df[df如果需要其他格式的非缺失值,可以使用:
np.random.seed(2020年)
df=pd.DataFrame(np.random.randint(10,size=(5,3)))
#这一个几乎充满了南
df1=df[DF你能把你的代码添加到问题中吗?你的条件看起来如何?你如何过滤?当然@jezrael,刚刚添加的是一种方法,可以得到一个数据帧,其中只包含完成过滤的值?只需它们自己,同一行中没有其他单元格,或者如果行中不是所有的值,也不丢弃整行?@Ma里约-不确定是否理解,我尝试编辑答案。
np.random.seed(2020)
df = pd.DataFrame(np.random.randint(10, size=(5, 3)))
# this one is almost filled with Nans
df1 = df[df<7]
print (df1)
0 1 2
0 0.0 NaN 3.0
1 6.0 3.0 3.0
2 NaN NaN 0.0
3 0.0 NaN NaN
4 3.0 NaN 2.0
df2 = df1.stack().rename_axis(('a','b')).reset_index(name='c')
print (df2)
a b c
0 0 0 0.0
1 0 2 3.0
2 1 0 6.0
3 1 1 3.0
4 1 2 3.0
5 2 2 0.0
6 3 0 0.0
7 4 0 3.0
8 4 2 2.0