【问题标题】:Keep First and Last entry of a Duplicate in a Dataframe Column在数据框列中保留重复项的第一个和最后一个条目
【发布时间】:2020-10-02 00:15:23
【问题描述】:

我有一个大数据框,里面有很多重复项。我想保留每个重复项的第一个和最后一个条目,但在两者之间删除每个重复项。

我已经尝试通过使用带有参数“first”和“last”的 df.drop_duplicates 来获得两个数据帧,然后将它们再次合并到一个 df 中,这样我就有了第一个和最后一个条目,但是没用。

df_first = df
df_last = df

df_first['Path'].drop_duplicates(keep='first', inplace=True)
df_last['Path'].drop_duplicates(keep='last', inplace=True)

提前感谢您的帮助!

【问题讨论】:

  • 你能分享一个样本和预期的输出吗??

标签: python pandas dataframe duplicates


【解决方案1】:

如果组长度为1,则使用GroupBy.nth 避免重复:

df = pd.DataFrame({
         'a':[5,3,6,9,2,4],
         'Path':list('aaabbc')
})
print(df)
   a Path
0  5    a
1  3    a
2  6    a
3  9    b
4  2    b
5  4    c

df = df.groupby('Path').nth([0, -1])
print (df)
      a
Path   
a     5
a     6
b     9
b     2
c     4

【讨论】:

  • 非常感谢您的快速响应,结果非常好! :-)
【解决方案2】:

**使用 group by.nth 这是从先前解决方案中更新的代码来获取第 n 个条目

def keep_second_dup(duplicate):
        duplicate[Columnname]=duplicate[Columnname'].value_counts()
        second_duplicate=duplicate[duplicate['Count']>=1]
        residual=duplicate[duplicate['Count']==1]
        sec=second_duplicated.groupby([Columnname]).nth([1]).reset_index()
        final_data=pd.concat([sec,residual])
        final_data.drop('Count',axis=1,inplace=True)
        return final_data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2021-09-21
    相关资源
    最近更新 更多