Kir*_*wty 2 python string boolean pandas pandas-groupby
我想要做的是保持所有行具有相同的唯一IDIF.这些行中的任何一行在Yurt列中仅包含两个" - "实例.
我正在考虑str.contains通过执行以下操作来使用a 和布尔掩码:
df[df['ID'].isin(df.loc[df.Yurt.str.contains('-'), 'ID'].unique())]
Run Code Online (Sandbox Code Playgroud)
...但不确定我如何只保留只有两个没有值的实例的行.
示例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 -
Run Code Online (Sandbox Code Playgroud)
结果df:
ID % Yurt
lmn789 0.837 Mickey's
lmn789 0.856 Chopped Cheese
lmn789 0.813 -
lmn789 0.812 -
Run Code Online (Sandbox Code Playgroud)
groupby在"ID"列上执行a 并使用filter:
df = df.groupby('ID').filter(lambda grp: grp['Yurt'].eq('-').sum() == 2)
Run Code Online (Sandbox Code Playgroud)
输出:
ID % Yurt
4 lmn789 0.837 Mickey's
5 lmn789 0.856 Chopped Cheese
6 lmn789 0.813 -
7 lmn789 0.812 -
Run Code Online (Sandbox Code Playgroud)