【发布时间】:2023-01-10 15:31:08
【问题描述】:
我有一个 DataFrame 以类似于这样的方式排列:
ID Sample_1 Sample_2
A 0.182 0.754
B 0.182 0.754
C 0.182 0.01
D 0.182 0.2
E 0.9 0.2
如您所见,有一些重复值(“真实”测量值)和单个值(实际上是“坏”测量值)。我需要做的是用 NA 替换所有唯一值(即所谓的“坏”)。这需要对所有列完成。
换句话说,最终的数据框应该是这样的:
ID Sample_1 Sample_2
A 0.182 0.754
B 0.182 0.754
C 0.182 NaN
D 0.182 0.2
E NaN 0.2
我考虑过的一个可能的解决方案涉及 groupby 和 filter 以获取索引值(如 Get indexes of unique values in column (pandas))然后替换值,但问题是它一次仅适用于一列:
unique_loc = df.groupby("Sample_1").filter(lambda x: len(x) == 1).index
df.loc[unique_loc, "Sample_1"] = np.nan
这意味着它需要对许多列重复(我在实际数据中有很多)。有没有更有效的解决方案?
【问题讨论】: