假設我有一個大的DataFrame
,但我想專注於它的選定部分,例如4列中的3列。如果至少要刪除整行這些所選3列中的2個值爲空。Python:如果選擇的列是空的,從Pandas Dataframe中刪除行
例如,這是數據幀我有我的選擇列['B','C','D']
:
A B C D
1 1
2 2
3 3 3 3
4
如何擺脫行如果至少兩個值都在選定列空的,這是第二次和第四排。
最後的數據幀是:
A B C D
1 1
3 3 3 3
假設我有一個大的DataFrame
,但我想專注於它的選定部分,例如4列中的3列。如果至少要刪除整行這些所選3列中的2個值爲空。Python:如果選擇的列是空的,從Pandas Dataframe中刪除行
例如,這是數據幀我有我的選擇列['B','C','D']
:
A B C D
1 1
2 2
3 3 3 3
4
如何擺脫行如果至少兩個值都在選定列空的,這是第二次和第四排。
最後的數據幀是:
A B C D
1 1
3 3 3 3
使用subset
與thresh
上dropna
In [2720]: df.dropna(subset=['B','C','D'], thresh=2)
Out[2720]:
A B C D
0 NaN 1.0 NaN 1.0
2 3.0 3.0 3.0 3.0
或者,使用notnull
In [2723]: df[df[['B', 'C', 'D']].notnull().sum(1).ge(2)]
Out[2723]:
A B C D
0 NaN 1.0 NaN 1.0
2 3.0 3.0 3.0 3.0
詳細
In [2722]: df
Out[2722]:
A B C D
0 NaN 1.0 NaN 1.0
1 2.0 NaN NaN 2.0
2 3.0 3.0 3.0 3.0
3 4.0 NaN NaN NaN
如果值是空白的,而不是零,使用df[df[['B', 'C', 'D']].eq('').sum(1).lt(2)]
或df[df[['B', 'C', 'D']].ne('').sum(1).ge(2)]
使用dropna
如果爲空值NaN
S:
cols = ['B','C','D']
df = df.dropna(subset=cols, thresh=2)
#same as
#df = df[df[cols].isnull().sum(1) < 2]
print (df)
A B C D
0 NaN 1.0 NaN 1.0
2 3.0 3.0 3.0 3.0
或者,如果空值是空字符串通過boolean indexing
比較受values
和過濾器創建numpy的數組:
df = df[(df[cols].values == '').sum(axis=1) < 2]
如果我使用這個函數,它會考慮所有列,也許我的例子是誤導。 – s900n
我有一個非常大的數據框埠我想檢查選定的列上的這種情況,並相應地刪除整個行。 – s900n
檢查上次編輯。 – jezrael