簡體   English   中英

根據列值刪除數據框中的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM