如果我需要从数据框中选择,其中列col1和col2必须遵循至少其中一列不必为空的条件。
现在,我正尝试在下面执行,但它不起作用
df=df.loc[(df['Cat1_L2'].isnull()) & (df['Cat2_L3'].isnull())==False]
答案 0 :(得分:2)
<强>设置强>
(修改U8-Forward的数据)
(function(){
var carouselCellUnitHeight = $('.carousel .carousel__cell').height(),
carouselCellCounts = $('.carousel .carousel__cell').length,
moveDis = -(carouselCellUnitHeight * ((carouselCellCounts/2)-1)),
$('.carousel__content-wrapper').css({
'transform' : 'translateY('+ moveDis +'px)'
});
})();
df = pd.DataFrame({'Cat1_L2':[1,np.nan,3, np.nan], 'Cat3_L3': [np.nan,3,4, np.nan]})
df
Cat1_L2 Cat3_L3
0 1.0 NaN
1 NaN 3.0
2 3.0 4.0
3 NaN NaN
+ isna
修复代码,确保sum
个案例(列中对应True
)的数量小于2。
NaN
带有df[df[['Cat1_L2', 'Cat3_L3']].isna().sum(axis=1) < 2]
Cat1_L2 Cat3_L3
0 1.0 NaN
1 NaN 3.0
2 3.0 4.0
的dropna
thresh
答案 1 :(得分:1)
一种方法是使用df.dropna(subset=['Cat1_L2', 'Cat3_L3'], thresh=1)
Cat1_L2 Cat3_L3
0 1.0 NaN
1 NaN 3.0
2 3.0 4.0
遍历每一行。要知道这在计算上是昂贵的。
1 - 创建列表,使用itertuples()
清除每行的条件itertuples()
<强> 2。将列表转换为pandas系列
condition_list = []
for row in df.itertuples():
if (row.Cat1_L2 != None) or (row.Cat2_L3 != None):
condition_list.append(1)
else:
condition_list.append(0)
第3。将系列追加到原始df
condition_series = pd.Series(condition_list)
<强> 4。过滤df
df['condition_column'] = condition_series.values