首页 > 解决方案 > 具有本地化日期时间索引的数据框:删除每一行,但存在于另一个数据框中的行

问题描述

我有一个如下的数据框 A:

2018-01-02 09:35:00-05:00    1.238914e-01
2018-01-02 09:40:00-05:00    2.125115e-02
2018-01-02 09:45:00-05:00    1.969027e-02
2018-01-02 09:50:00-05:00    1.467054e-02
2018-01-02 09:55:00-05:00    1.831057e-02
2018-01-02 10:00:00-05:00    1.714546e-02
2018-01-02 10:05:00-05:00    1.515882e-02
2018-01-02 10:10:00-05:00    1.096963e-02
2018-01-02 10:15:00-05:00    9.687181e-03
2018-01-02 10:20:00-05:00    9.098983e-03
2018-01-02 10:25:00-05:00    8.747766e-03
2018-01-02 10:30:00-05:00    1.227635e-02
2018-01-02 10:35:00-05:00    9.554932e-03
2018-01-02 10:40:00-05:00    1.012054e-02

另一个 B 如下所示:

2018-01-02 09:35:00-05:00    1.95814e-01
2018-01-02 10:35:00-05:00    9.551878-03
2018-01-02 10:40:00-05:00    8.000478-03

我需要将 A 转换为:

2018-01-02 09:35:00-05:00    1.238914e-01
2018-01-02 10:35:00-05:00    9.554932e-03
2018-01-02 10:40:00-05:00    1.012054e-02

即:删除 A 中的每一行,但删除 B 中的那些。

所以我在做:

a_df = pd.read_csv(a_file, index_col=0, parse_dates=True)
b_df = pd.read_csv(b_file, index_col=0, parse_dates=True)

a_df.index = pd.to_datetime(a_df.index, utc=True)
b_df.index = pd.to_datetime(b_df.index, utc=True)

最后

a_df = a_df.loc[b_df.index, a_df.columns]

但我越来越

 ValueError: Tz-aware datetime.datetime cannot be converted to datetime64 unless utc=True

熊猫 0.24.2

标签: pythonpython-3.xpandasdataframe

解决方案


你介意试试这个:

#create some test data
dfa = pd.DataFrame({"index": ["2018-01-02 09:35:00-05:00", "2018-01-02 09:40:00-05:00", "2018-01-02 09:45:00-05:00", "2018-01-02 09:50:00-05:00"], 
                    "values": [1.238914e-01, 2.125115e-02, 1.969027e-02, 1.467054e-02]}).set_index("index")
dfb = pd.DataFrame({"index": ["2018-01-02 09:35:00-05:00", "2018-01-02 09:40:00-05:00"], 
                    "values": [1.238914e-01, 2.125115e-02]}).set_index("index")

#convert to date time object
dfa.index = pd.to_datetime(dfa.index, utc=True)
dfb.index = pd.to_datetime(dfb.index, utc=True)

#select to appropriate indices
dfa[dfa.index.isin(dfb.index)]

输出:

                    index   values
2018-01-02 14:35:00+00:00   0.123891
2018-01-02 14:40:00+00:00   0.021251

我正在使用isin索引dfb来实现索引的布尔选择dfa


推荐阅读