所以基本上,我只能坚持一个非常简单的事情。由于某些原因,当我执行此代码时:
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的行。我尝试了许多变体,但似乎无法修复。有任何想法吗?
输出
我感兴趣的文件的一部分
答案 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
答案 2 :(得分:0)
我猜数据集中有空行,请尝试使用:
x.fillna(-99999, inplace=True)
应该可以解决问题或更佳的解决方案,发布您的输出结果,我们知道该怎么做。
答案 3 :(得分:0)
您也可以这样做
y = z.loc[z['Survived'] == 1]
答案 4 :(得分:0)
您可以使用loc,然后只找到符合条件的每一行。
survivors = df.loc[df['Survived'] == 1]