[英]Delete rows in dataframe based on column values
我需要刪除 C 列中具有空值的所有行。這是代碼:
infile="C:\****"
df=pd.read_csv(infile)
A B C D
1 1 NaN 3
2 3 7 NaN
4 5 NaN 8
5 NaN 4 9
NaN 1 2 NaN
我嘗試了兩種基本方法。
方法 1:來源: 如何刪除某些列中值為 NaN 的 Pandas DataFrame 行
df.dropna()
結果是一個空的數據幀,這是有道理的,因為每一行都有一個 NaN 值。
df.dropna(subset=[3])
對於這種方法,我嘗試使用列索引號和列名來處理子集值。 數據框仍然是空的。
方法2:來源: 根據列值刪除Pandas中的DataFrame行
df = df[df.C.notnull()]
仍然會導致一個空的數據框!
我究竟做錯了什么?
df = pd.DataFrame([[1,1,np.nan,3],[2,3,7,np.nan],[4,5,np.nan,8],[5,np.nan,4,9],[np.nan,1,2,np.nan]], columns = ['A','B','C','D'])
df = df[df['C'].notnull()]
df
這只是證明您的method 2
正常工作(至少對於 Pandas 0.18.0):
In [100]: df
Out[100]:
A B C D
0 1.0 1.0 NaN 3.0
1 2.0 3.0 7.0 NaN
2 4.0 5.0 NaN 8.0
3 5.0 NaN 4.0 9.0
4 NaN 1.0 2.0 NaN
In [101]: df.dropna(subset=['C'])
Out[101]:
A B C D
1 2.0 3.0 7.0 NaN
3 5.0 NaN 4.0 9.0
4 NaN 1.0 2.0 NaN
In [102]: df[df.C.notnull()]
Out[102]:
A B C D
1 2.0 3.0 7.0 NaN
3 5.0 NaN 4.0 9.0
4 NaN 1.0 2.0 NaN
In [103]: df = df[df.C.notnull()]
In [104]: df
Out[104]:
A B C D
1 2.0 3.0 7.0 NaN
3 5.0 NaN 4.0 9.0
4 NaN 1.0 2.0 NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.