python - 具有本地化日期时间索引的数据框:删除每一行,但存在于另一个数据框中的行
问题描述
我有一个如下的数据框 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
解决方案
你介意试试这个:
#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
。
推荐阅读
- algorithm - 不完整表中的最大完整表
- laravel-6 - 如何从链接中获取目录列表
- arrays - 为什么 sizeof() 运算符没有给出正确的大小?
- c++ - C++:无法将字符串转换为 char*?
- keycloak - 如何在keycloak中注册后解决重定向登录页面
- javascript - 循环遍历数组 JavaScript 中的前 3 个项目(反应)
- kubernetes - “Pod The node has condition: [DiskPressure]”和“The node was low on resource: ephemeral-storage”有什么区别
- robotframework - ValueError:参数“url”的值“https://www.google.com”在运行测试时无法转换为无
- python - 如何使用 django allauth 避免重复键错误?
- sql - 我无法检测到我在下面的 pl sql 块中遇到的字符匹配错误