我有一个包含一些整数值的数据帧,我想只在多列[col1,col3,col4]不是全零的情况下才创建该行的新数据帧。例如:
col1 col2 col3 col4 col5 col6
0 0 text1 3 0 22 0
1 9 text2 13 11 22 1
2 0 text3 0 0 22 0 # not valid
3 9 text4 13 11 22 0
4 0 text5 0 1 12 4
我不确定是否可以用一个lambda来做到这一点。
答案 0 :(得分:1)
根本不需要任何自定义功能。我们可以只选择我们想要的列,进行布尔比较,然后使用它来索引数据帧:
In [28]: df[["col1", "col3", "col4"]] == 0
Out[28]:
col1 col3 col4
0 True False True
1 False False False
2 True True True
3 False False False
4 True True False
In [29]: (df[["col1", "col3", "col4"]] == 0).all(axis=1)
Out[29]:
0 False
1 False
2 True
3 False
4 False
dtype: bool
In [30]: df.loc[~(df[["col1", "col3", "col4"]] == 0).all(axis=1)]
Out[30]:
col1 col2 col3 col4 col5 col6
0 0 text1 3 0 22 0
1 9 text2 13 11 22 1
3 9 text4 13 11 22 0
4 0 text5 0 1 12 4
有很多类似的方法可以重写它(并非所有的零都是非零等等)。