熊猫从列表和过滤器分组的列值

安克

我有一个像这样的熊猫数据框:

id variable year
1     a     2020
1     a     2030
1     a     2040
1     a     2050
1     b     2020
1     b     2030
1     b     2040
1     b     2050
1     c     2020
1     c     2030
1     c     2040
1     c     2050

现在,对于列表中的变量var = ['a','b'],我只想保留2020和2030行。对于其余变量(c例如在上面的示例中),我想保留2020、2030和2040行。因此,最终数据帧应为:

id variable year
1     a     2020
1     a     2030
1     b     2020
1     b     2030
1     c     2020
1     c     2030
1     c     2040

我该如何实现?

耶斯列尔

使用Series.isin由链|按位OR&按位AND~为反转面膜:

var =  ['a','b']
var1 = [2020,2030]
var2 = [2020,2030,2040]

m1 = df['variable'].isin(var)
m2 = df['year'].isin(var1)
m3 = df['year'].isin(var2)

df = df[(m1 & m2) | (~m1 & m3)]
print (df)
    id variable  year
0    1        a  2020
1    1        a  2030
4    1        b  2020
5    1        b  2030
8    1        c  2020
9    1        c  2030
10   1        c  2040

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章