Pandas 将轴0上的重复项替换为0
ID表示同一事物的级别。这意味着数据集在每个样本中都有许多重复项。我想保留最长的ID值,因为它包含的信息最多Pandas 将轴0上的重复项替换为0,pandas,numpy,Pandas,Numpy,ID表示同一事物的级别。这意味着数据集在每个样本中都有许多重复项。我想保留最长的ID值,因为它包含的信息最多 df_test=pd.DataFrame({'ID':[ "k__", "k__|p__|c__|o__", "k__|p__|c__|o__|f__",
df_test=pd.DataFrame({'ID':[
"k__",
"k__|p__|c__|o__",
"k__|p__|c__|o__|f__",
"k__|p__|c__|o__|f__|g_",
"k__|p__|c__|o__|f__|g_|s__",
"k__|p__|c__|o__|f__|g_|s__|a"],
'sample_1':[95,3.64,3.64,3.1,3.1,3.1],
'sample_2':[93,2.45,2.45,4.5,4.5,4.5],
'sample_3':[93,2.45,2.45,4.5,4.5,7.5]})
我处理这个问题的方法是删除重复项,保留重复项的最后一次出现(在ID列中包含的数据最多)和按样本划分的子集:
sample_cols = [col for col in df_test.columns if 'sample' in col]
df_test.drop_duplicates(subset=sample_cols, keep='last')
尽管在样本1和样本2的索引4和索引5中发生的情况是,当另一列或样本包含不同的值时,会保留重复的值
pandas中是否有方法检查0轴上是否出现重复值,以用0填充最后一个引用:
ID sample_1 sample_2 sample_3
0 k__ 95.00 93.00 93.00
2 k__|p__|c__|o__|f__ 3.64 2.45 2.45
4 k__|p__|c__|o__|f__|g_|s__ 0 0 4.50
5 k__|p__|c__|o__|f__|g_|s__|a 3.10 4.50 7.50
我使用了
df。重复的::
首先删除重复项并保留最后一行(工作原理与代码中相同,只是一行):
然后用零替换:
for sample in df_test.iloc[:,1:]:
df_test.loc[df_test[sample].duplicated(keep = 'last'), sample] = 0
df_test
ID sample_1 sample_2 sample_3
0 k__ 95.00 93.00 93.00
2 k__|p__|c__|o__|f__ 3.64 2.45 2.45
4 k__|p__|c__|o__|f__|g_|s__ 0.00 0.00 4.50
5 k__|p__|c__|o__|f__|g_|s__|a 3.10 4.50 7.50
它确实给出了一个警告,这是我无法避免的,但它确实起到了预期的作用
ID sample_1 sample_2 sample_3
0 k__ 95.00 93.00 93.00
2 k__|p__|c__|o__|f__ 3.64 2.45 2.45
4 k__|p__|c__|o__|f__|g_|s__ 0 0 4.50
5 k__|p__|c__|o__|f__|g_|s__|a 3.10 4.50 7.50
df_test = df_test[df_test.iloc[:,1:].duplicated(keep = 'last') == False]
df_test
ID sample_1 sample_2 sample_3
0 k__ 95.00 93.00 93.00
2 k__|p__|c__|o__|f__ 3.64 2.45 2.45
4 k__|p__|c__|o__|f__|g_|s__ 3.10 4.50 4.50
5 k__|p__|c__|o__|f__|g_|s__|a 3.10 4.50 7.50
for sample in df_test.iloc[:,1:]:
df_test.loc[df_test[sample].duplicated(keep = 'last'), sample] = 0
df_test
ID sample_1 sample_2 sample_3
0 k__ 95.00 93.00 93.00
2 k__|p__|c__|o__|f__ 3.64 2.45 2.45
4 k__|p__|c__|o__|f__|g_|s__ 0.00 0.00 4.50
5 k__|p__|c__|o__|f__|g_|s__|a 3.10 4.50 7.50