【发布时间】:2019-09-28 15:21:06
【问题描述】:
我有一个如下所示的数据框:
df_pairs
128.437 128.437 121.639 5100.9 5029.08 5029.08 4888.81 4888.81 0 0 0 0 0 0
129.588 129.588 122.79 5102.05 5030.24 5030.24 4959.55 4959.55 4889.96 4889.96 0 0 0 0
我想保留每行中的所有唯一值,并将每个重复值减少到仅配对值中的 1 个。
输出将是:
df_unique
128.437 121.639 5100.9 5029.08 4888.81 0 0 0
129.588 122.79 5102.05 5030.24 4959.55 4889.96 0 0
所以你现在可以看到每一行都有一对/2,如果该对相等。
伪代码类似于:
df_unique = pd.DataFrame(columns=df_pairs.columns)
for columns in range(len(df_pairs.columns)):
if df_pairs.iloc[row_element] == df_pairs.iloc[row_element+1]:
unique_element = df_pairs.iloc[row_element]
df_unique[new_row_element] = unique_element
有没有什么方法可以快速做到这一点,而无需逐行逐行迭代?
我不能简单地使用df.drop_duplicates() 删除所有重复项,因为行中可能存在重复值不一定是邻居对,而且如果存在我想保持唯一对的 0,则它们发生了。
【问题讨论】:
-
顺序必须保持不变,但索引明显偏移。
-
只有相邻的事物才被认为是对,还是
0 10 0仍然会将 0 视为重复项? -
不只是相邻对。
标签: python python-3.x pandas dataframe duplicates