Pandas Dataframe:删除重复的行并将数据附加到剩余的唯一行

科尔

我具有df的以下结构(作为示例):

根据评论编辑数据

import pandas as pd
    
    
data = {'ID':["abc", "abc", "123", "xyz", "xyz"], 'valid':[["A", "B"], [], [], ["A", "B", "C"], []],
        'not_valid':[[], ["C", "D"], ["A", "B", "C", "D"], [], ["D"]],
       'other_data': ["1", "1", "3", "4", "4"]}

df = pd.DataFrame(data)

这使:

ID    valid         not_valid      other_data
abc   [A, B]        []             1
abc   []            [C, D]         1
123   []            [A, B, C, D]   3
xyz   [A, B, C]     []             4
xyz   []            [D]            4

结果,我想要的是以下内容:

ID    valid         not_valid      other_data
abc   [A, B]        [C, D]         1
123   []            [A, B, C, D]   3
xyz   [A, B, C]     [D]            4

我想知道如何将两个列valid以及not_valid每个唯一的ID合并在一起(并非每个ID都必须像在这种情况下那样具有两个条目123)。

虽然我可以删除重复项

df.drop_duplicates(subset=['ID']).reset_index()

我显然丢失了重复ID的一半数据。

耶斯列尔

您可以使用以下方法将值展平:将值转换为集合,然后转换为中的列表GroupBy.agg

cols = ['valid','not_valid']
df = df.groupby('ID', sort=False)[cols].agg(lambda x: list(set(z for y in x for z in y)))
print (df)
         valid     not_valid
ID                          
abc     [A, B]        [D, C]
123         []  [A, D, B, C]
xyz  [A, B, C]           [D]

编辑:如果每个组的其他列的所有值都相同,请ID使用:

#grouping by all columns without valid, not_valid
c = df.columns.difference(['valid','not_valid']).tolist()
f = lambda x: list(set(z for y in x for z in y))
df1 = df.groupby(c, sort=False, as_index=False).agg(f).reindex(df.columns, axis=1)
print (df1)
    ID      valid     not_valid other_data
0  abc     [A, B]        [D, C]          1
1  123         []  [A, D, B, C]          3
2  xyz  [A, B, C]           [D]          4

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Pandas.DataFrame中的列上进行迭代并将函数的结果附加到同一行?

来自分类Dev

Pandas 尝试将一行附加到数据帧,但不断覆盖现有行

来自分类Dev

如何在Pandas中为每个唯一行值删除重复项?

来自分类Dev

Pandas 表连接和重复数据删除决定保留哪一行

来自分类Dev

从具有非唯一索引的pandas DataFrame删除行

来自分类Dev

在一行上删除 Pandas DataFrame 中的多列

来自分类Dev

在pandas数据框中放入重复的第一行和最后一行

来自分类Dev

根据条件删除pandas数据框中的一行

来自分类Dev

python pandas dataframe唯一值,将“ L”附加到数据值

来自分类Dev

pandas 数据框 - 根据特定的列值删除剩余的行

来自分类Dev

Python Pandas-过滤pandas数据框以获取一行中具有最小值的行,而另一行中的每个唯一值

来自分类Dev

如何将PANDAS数据帧的一行添加到其余行?

来自分类Dev

Pandas DataFrame-删除特定列中与上一行具有相同值的行

来自分类Dev

如何计算 Pandas 数据帧的过滤行的均值并将均值附加到原始数据帧的所有列?

来自分类Dev

遍历pandas数据框,从另一行中的数据更新值,然后删除另一行

来自分类Dev

如何防止Pandas Dataframe在每一行重复列名?

来自分类Dev

如何使用Pandas将行附加到空的数据框

来自分类Dev

仅重复第一行和经纬度,并使用 Pandas 数据帧的长度时间

来自分类Dev

尝试从pandas DataFrame索引中删除一行时出错?

来自分类Dev

如何通过一次读取一行来转置 Pandas Dataframe 中的数据?

来自分类Dev

Pandas:将行附加到已经通过pandas.DataFrame.apply运行的DataFrame

来自分类Dev

Pandas DataFrame:根据列中的条件删除重复的行

来自分类Dev

有效地检查与 Pandas DataFrame 中某些值匹配的行并将其添加到另一个数据框中

来自分类Dev

如何删除以最后一行值为条件的pandas数据框列?

来自分类Dev

一次处理一行 Pandas Dataframe 的问题

来自分类Dev

Python readlines()并将数据附加到每一行输出到一行

来自分类Dev

Python Pandas合并两个数据帧,并将一个数据帧的一行映射到另一数据帧的所有行

来自分类Dev

通过一行访问Pandas数据框中的数据

来自分类Dev

如何基于在特定列中搜索数据来在Pandas Dataframe中选择一行

Related 相关文章

  1. 1

    如何在Pandas.DataFrame中的列上进行迭代并将函数的结果附加到同一行?

  2. 2

    Pandas 尝试将一行附加到数据帧,但不断覆盖现有行

  3. 3

    如何在Pandas中为每个唯一行值删除重复项?

  4. 4

    Pandas 表连接和重复数据删除决定保留哪一行

  5. 5

    从具有非唯一索引的pandas DataFrame删除行

  6. 6

    在一行上删除 Pandas DataFrame 中的多列

  7. 7

    在pandas数据框中放入重复的第一行和最后一行

  8. 8

    根据条件删除pandas数据框中的一行

  9. 9

    python pandas dataframe唯一值,将“ L”附加到数据值

  10. 10

    pandas 数据框 - 根据特定的列值删除剩余的行

  11. 11

    Python Pandas-过滤pandas数据框以获取一行中具有最小值的行,而另一行中的每个唯一值

  12. 12

    如何将PANDAS数据帧的一行添加到其余行?

  13. 13

    Pandas DataFrame-删除特定列中与上一行具有相同值的行

  14. 14

    如何计算 Pandas 数据帧的过滤行的均值并将均值附加到原始数据帧的所有列?

  15. 15

    遍历pandas数据框,从另一行中的数据更新值,然后删除另一行

  16. 16

    如何防止Pandas Dataframe在每一行重复列名?

  17. 17

    如何使用Pandas将行附加到空的数据框

  18. 18

    仅重复第一行和经纬度,并使用 Pandas 数据帧的长度时间

  19. 19

    尝试从pandas DataFrame索引中删除一行时出错?

  20. 20

    如何通过一次读取一行来转置 Pandas Dataframe 中的数据?

  21. 21

    Pandas:将行附加到已经通过pandas.DataFrame.apply运行的DataFrame

  22. 22

    Pandas DataFrame:根据列中的条件删除重复的行

  23. 23

    有效地检查与 Pandas DataFrame 中某些值匹配的行并将其添加到另一个数据框中

  24. 24

    如何删除以最后一行值为条件的pandas数据框列?

  25. 25

    一次处理一行 Pandas Dataframe 的问题

  26. 26

    Python readlines()并将数据附加到每一行输出到一行

  27. 27

    Python Pandas合并两个数据帧,并将一个数据帧的一行映射到另一数据帧的所有行

  28. 28

    通过一行访问Pandas数据框中的数据

  29. 29

    如何基于在特定列中搜索数据来在Pandas Dataframe中选择一行

热门标签

归档