我想做的是让所有行都具有相同的唯一 ID
,如果这些行中的任何一行在 Yurt 列中仅包含两个“-”实例。
我正在考虑通过执行以下操作来使用 str.contains
和 boolean 掩码:
df[df['ID'].isin(df.loc[df.Yurt.str.contains('-'), 'ID'].unique())]
...但不确定我如何只保留只有两个没有值的实例的行。
例子 df:
ID % Yurt
abc123 0.833 Bodega
abc123 0.87 -
abc123 0.867 -
abc123 0.812 -
lmn789 0.837 Mickey's
lmn789 0.856 Chopped Cheese
lmn789 0.813 -
lmn789 0.812 -
xyz456 0.111 -
xyz456 0.222 -
xyz456 0.333 -
xyz456 0.444 -
结果 df:
ID % Yurt
lmn789 0.837 Mickey's
lmn789 0.856 Chopped Cheese
lmn789 0.813 -
lmn789 0.812 -
最佳答案
在“ID”列上执行 groupby
并使用 filter
:
df = df.groupby('ID').filter(lambda grp: grp['Yurt'].eq('-').sum() == 2)
输出:
ID % Yurt
4 lmn789 0.837 Mickey's
5 lmn789 0.856 Chopped Cheese
6 lmn789 0.813 -
7 lmn789 0.812 -
关于python - 尝试使用 str.contains 和 boolean 掩码,但仅针对 Pandas 中的两个单值实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51544427/