Python熊猫,删除NaN

时间:2018-12-19 11:49:41

标签: python pandas

所以基本上,我只能坚持一个非常简单的事情。由于某些原因,当我执行此代码时:

import pandas as pd
x = pd.read_csv('titanic.csv')
v = x.dropna(axis=0,how="any")

z = v[["Survived"]]

y = z.where(z == 1)

print (y)

即使我已经在整个文件上执行dropna,它仍会使用NaN打印值,并且它可以工作。我只想打印值为1的行。我尝试了许多变体,但似乎无法修复。有任何想法吗?

输出

Screen Shot

我感兴趣的文件的一部分

Screen Shot

5 个答案:

答案 0 :(得分:2)

尝试:

y = z.where(z == 1).dropna(subset=['Survived'])

答案 1 :(得分:1)

样本数据:

 PassengerId  Survived  pClass

 1            1         3

 2            1         4

 3            0         2

 4            1         9

 5            0         6

 6            0         0
import pandas as pd
import numpy as np

columns = ['PassengerId','Survived', 'pClass']
PassengerIdList = [1,2,3,4,5,6]
SurvivedList = [1,1,0,1,0,0]
pClassList = [3,4,2,9,6,0]

newList = list(zip(PassengerIdList,SurvivedList,pClassList))
data = np.array(newList)
# print(data)
df = pd.DataFrame(data, columns=columns)
filtered_df = df.loc[df['Survived'] == 1]
print(filtered_df)

输出:

  PassengerId    Survived       pClass

     1             1            3

     2             1            4

     4             1            9

pyFiddle

答案 2 :(得分:0)

我猜数据集中有空行,请尝试使用:

x.fillna(-99999, inplace=True)

应该可以解决问题或更佳的解决方案,发布您的输出结果,我们知道该怎么做。

答案 3 :(得分:0)

您也可以这样做

y = z.loc[z['Survived'] == 1]

答案 4 :(得分:0)

您可以使用loc,然后只找到符合条件的每一行。

survivors = df.loc[df['Survived'] == 1]
相关问题