gpt4 book ai didi

python - 基于列值的 Pandas 重新索引任务

转载 作者:太空狗 更新时间:2023-10-30 02:52:35 25 4
gpt4 key购买 nike

我有一个包含数百万行的数据框,这些行具有唯一索引和一个具有多个重复值的列('b')。

我想生成一个没有重复数据的数据框,但我不想丢失索引信息。我希望新数据框有一个索引,该索引是索引 ("old_index1,old_index2") 的串联,其中 'b' 具有重复值,但对于 'b' 具有唯一值的行保持不变。 “b”列的值应保持不变,就像在 keep=first 策略中一样。示例如下。

输入数据框:

df = pd.DataFrame(data = [[1,"non_duplicated_1"],
[2,"duplicated"],
[2,"duplicated"],
[3,"non_duplicated_2"],
[4,"non_duplicated_3"]],
index=['one','two','three','four','five'],
columns=['a','b'])

期望的输出:

             a                 b
one 1 non_duplicated_1
two,three 2 duplicated
four 3 non_duplicated_2
five 4 non_duplicated_3

实际的数据帧非常大,所以我想避免非矢量化操作。

我发现这出奇地困难...有什么想法吗?

最佳答案

您可以在索引列上使用transform(在使用reset_index 之后)。然后,在 b 列中删除重复项:

df.index = df.reset_index().groupby('b')['index'].transform(','.join)

df.drop_duplicates('b',inplace=True)

>>> df
a b
index
one 1 non_duplicated_1
two,three 2 duplicated
four 3 non_duplicated_2
five 4 non_duplicated_3

关于python - 基于列值的 Pandas 重新索引任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52844659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com