从另一个数据框中删除包含相同日期的行-python-大熊猫

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从另一个数据框中删除包含相同日期的行-python-大熊猫相关的知识,希望对你有一定的参考价值。

如何删除与另一个数据框包含相同日期的所有行?我想在两个数据框之间的所有列中保留唯一的行。另外,我不能使用合并。

import pandas as pd
from datetime import timedelta
df1 = pd.DataFrame(
        'date': ['2001-02-01','2001-02-02','2001-02-03', '2001-02-04'],
        'value': [101, 201, 310, 410])
df2 = pd.DataFrame(
        'date': ['2001-02-03','2001-02-04','2001-02-05', '2001-02-05'],
        'value': [121, 231, 610, 990])
df1['date'] = pd.to_datetime(df1['date'])
df2['date'] = pd.to_datetime(df2['date'])

返回:

         date  value
0  2001-02-01    101
1  2001-02-02    201
2  2001-02-03    310
3  2001-02-04    410
---
         date  value
0  2001-02-03    121
1  2001-02-04    231
2  2001-02-05    610
3  2001-02-06    990

所需的数据框:

print(df3)

         date  value
0  2001-02-01    101
1  2001-02-02    201
2  2001-02-05    610
3  2001-02-06    990

我尝试过df1[~df1.date.notin(df2.date)],但这会引发错误: AttributeError: 'Series' object has no attribute 'notin'

我也尝试过df1[~df1.date.isin(df2.date) == False],并且返回:

    date    value
2   2001-02-03  310
3   2001-02-04  410
答案

将两者合并,然后删除重复的日期:

df3 = pd.concat([df1, df2]).drop_duplicates(subset='date', keep=False)

以上是关于从另一个数据框中删除包含相同日期的行-python-大熊猫的主要内容,如果未能解决你的问题,请参考以下文章

如何删除在 Python 数据框中部分包含字符串的行 [重复]

按日期范围删除数据框中的行。

根据来自不同数据帧的行名将列从另一个数据帧复制到

如何使用熊猫从另一个数据框 B 的列中删除包含特定数量值的数据框 A 中的行?

如何根据列中的最新日期聚合 pandas 数据框中的行?

Python pandas:在groupby数据框中插入缺失日期、时间序列的行