如何根据另一列中的值检查 pandas df 列值是否存在?

艾美奖

我有一个如下所示的熊猫数据框

ID 价值
2016年 1 100
2017年 1 102
2017年 1 105
2018年 1 98
2016年 2 121
2016年 2 101
2016年 2 133
2018年 3 102

我想检查该 ID 是否仅存在于 2018 年。我想要的输出如下:

ID 价值 ID_only_in_2018
2016年 1 100 0
2017年 1 102 0
2017年 1 105 0
2018年 1 98 0
2016年 2 121 0
2016年 2 101 0
2016年 2 133 0
2018年 3 102 1

请问,我怎样才能在python中实现这一点?

耶斯列

比较 Year for 2018,然后测试所有值是否仅为2018

mask = df['Year'].eq(2018).groupby(df['ID']).transform('all')

另一个想法是测试是否 Year 不是2018,过滤ID不匹配的至少一个非2018行和最后一个反转掩码,~用于仅获取2018组:

mask = ~df['ID'].isin(df.loc[df['Year'].ne(2018), 'ID'])

最后将掩码转换为整数:

df['ID_only_in_2018'] = mask.astype(int)

或者:

df['ID_only_in_2018'] = np.where(mask, 1, 0)

或者:

df['ID_only_in_2018'] = mask.view('i1')

print (df)
   Year  ID  Value  ID_only_in_2018
0  2016   1    100                0
1  2017   1    102                0
2  2017   1    105                0
3  2018   1     98                0
4  2016   2    121                0
5  2016   2    101                0
6  2016   2    133                0
7  2018   3    102                1

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据df中的另一列值选择df pandas中的元素

是否有任何函数可以根据另一列文本中单词的存在情况在 pandas df 列中放置一些值?

根据另一列中的值替换pandas df中的值

根据Pandas df中另一列中的最大值删除重复行

根据另一列的唯一性获取1列的pandas df中的所有值

Pandas - 根据后一列中是否存在值过滤一列中具有相同值和另一列中多个值的行

Python Pandas:检查一列中的值是否存在于另一列中的行子集中

检查pandas df中的列值是否在列表中

如何根据另一列值的函数输出在 df 中插入值

如何根据另一列替换特定 DF 列中的值

Pandas df:用另一列中的特定值填充新列中的值(多列條件)

Python Pandas DataFrame检查一列的值是否在另一列表中

pandas - 根据另一列更改列中的值

从第三列为1的另一列中的最后一个值创建pandas df列

根据另一个中的值填充新的pandas df列

如何根据 Pandas 中另一列中的值替换 NAN 值

Python Pandas - 如何将 df 中的列值与另一个 df 的列值进行比较

检查pandas df中的值是否在第二个df列的列表内

Pandas / Python:根据另一列中的值设置一列的值

Pandas:如何根据另一列替换列中的 Nan 值?

Pandas groupby:根据另一列中的值更改一列中的值

Python:Pandas:如何根据Groupby在另一列中查找最大值

如何检查pandas df中的单个值

从另一列pandas df分配值的有效方法

根据Pandas中另一列的值范围汇总一列的内容

根据另一列(Python,Pandas)中的值删除一列的重复项

根据另一列中的值填充一列-Pandas

如何将一个 df 中的一列除以 pandas 中不同 df 中的另一列?

Python-检查df2列中是否存在df1列中的值