Python 合并两个数据帧并删除具有重复索引的重复行(熊猫)
我读过很多类似问题的帖子,但找不到这个问题。 我有两个数据帧要合并。 它们以时间戳作为索引。 第二个数据帧基本上与第一个数据帧重叠,因此它们共享具有相同时间戳和值的行 我想删除这些行,因为它们共享所有内容:索引和列中的值。 如果它们在列中不共享索引和值,我希望保留它们 到目前为止,我可以指出: Index.drop\u duplicate:这不是我要找的。它不检查列中的值是否相同。我想在列中保留时间戳相同但值不同的行 DataFrame.drop_duplicate:和上面一样,它不检查索引值,如果在列中发现具有相同值但不同索引的行,我希望保留它们 举个例子,我正在重新使用下面答案中给出的数据 df1 df2 我希望得到的结果如下:Python 合并两个数据帧并删除具有重复索引的重复行(熊猫),python,pandas,concatenation,Python,Pandas,Concatenation,我读过很多类似问题的帖子,但找不到这个问题。 我有两个数据帧要合并。 它们以时间戳作为索引。 第二个数据帧基本上与第一个数据帧重叠,因此它们共享具有相同时间戳和值的行 我想删除这些行,因为它们共享所有内容:索引和列中的值。 如果它们在列中不共享索引和值,我希望保留它们 到目前为止,我可以指出: Index.drop\u duplicate:这不是我要找的。它不检查列中的值是否相同。我想在列中保留时间戳相同但值不同的行 DataFrame.drop_duplicate:和上面一样,它不检查索引值,
Value
2012-02-01 12:00:00 10 #(from df1)
2012-02-01 12:30:00 10 #(from df1)
2012-02-01 12:30:00 20 #(from df2 - same index than in df1, but different value)
2012-02-01 13:00:00 20 #(in df1 & df2, only one kept)
2012-02-01 13:30:00 30 #(in df1 & df2, only one kept)
2012-02-02 14:00:00 10 #(from df2)
拜托,有什么想法吗?
谢谢你的帮助!
BEST假设您有以下两个数据帧:
pd.concat([df, df2]).sort_values('Date')\
.drop_duplicates().reset_index(drop=True)
上述数据的结果为:
Date Value
0 2012-02-01 12:00:00 10
1 2012-02-01 12:30:00 10
2 2012-02-01 12:30:00 21
3 2012-02-01 12:40:00 22
4 2012-02-01 13:00:00 20
5 2012-02-01 13:30:00 30
6 2012-02-02 14:00:00 10
7 2012-02-02 14:30:00 10
8 2012-02-02 15:00:00 20
9 2012-02-02 15:30:00 30
删除重复的行
删除重复的行,保留第一行。
由于未通过子集
参数,因此要处理的标准
重复的两行是所有列的标识。假设您有以下两个数据帧:
pd.concat([df, df2]).sort_values('Date')\
.drop_duplicates().reset_index(drop=True)
上述数据的结果为:
Date Value
0 2012-02-01 12:00:00 10
1 2012-02-01 12:30:00 10
2 2012-02-01 12:30:00 21
3 2012-02-01 12:40:00 22
4 2012-02-01 13:00:00 20
5 2012-02-01 13:30:00 30
6 2012-02-02 14:00:00 10
7 2012-02-02 14:30:00 10
8 2012-02-02 15:00:00 20
9 2012-02-02 15:30:00 30
删除重复的行
删除重复的行,保留第一行。
由于未通过子集
参数,因此要处理的标准
两行重复是所有列的标识。阅读如何发布一个好问题。您没有示例输入表,也没有希望表在以后看起来像什么的示例。帮我们帮你,你好,谢尔盖,是的,对不起。你是对的,我添加了一个数据示例。阅读如何发布一个好问题。您没有示例输入表,也没有希望表在以后看起来像什么的示例。帮我们帮你,你好,谢尔盖,是的,对不起。你说得对,我添加了一个数据示例。你好,瓦尔迪。谢谢你的回答。在Serge的评论之后,我根据您实际提供的数据添加了一个示例。你的答案与我的意图不符。请问,您认为考虑到我给出的示例,您的方法可以调整吗?现在我看到您希望保留一个重复的行。代码中的差异可以归结为删除keep参数。谢谢你的回答。在Serge的评论之后,我根据您实际提供的数据添加了一个示例。你的答案与我的意图不符。请问,您认为考虑到我给出的示例,您的方法可以调整吗?现在我看到您希望保留一个重复的行。代码中的差异归结为删除了keep参数。
pd.concat([df, df2]).sort_values('Date')\
.drop_duplicates().reset_index(drop=True)
Date Value
0 2012-02-01 12:00:00 10
1 2012-02-01 12:30:00 10
2 2012-02-01 12:30:00 21
3 2012-02-01 12:40:00 22
4 2012-02-01 13:00:00 20
5 2012-02-01 13:30:00 30
6 2012-02-02 14:00:00 10
7 2012-02-02 14:30:00 10
8 2012-02-02 15:00:00 20
9 2012-02-02 15:30:00 30