python - 将数据框与分层索引合并?
问题描述
问题
- 如何使用分层索引合并两个数据框?
- 我的数据框的索引是
datetime.datetime
和datetime.time
代码示例
import pandas as pd
import numpy as np
import datetime
BTC_df = pd.DataFrame(np.array([[datetime.time(19,15,0),1.05,'BTC'],[datetime.time(9,20,0),1.2,'BTC']]),
columns = ['time','return','coin'],
index = [[datetime.date(2020,5,1), datetime.date(2020,5,2)]])
ETH_df = pd.DataFrame(np.array([[datetime.time(8,30,0),1.1,'ETH'],[datetime.time(17,30,0),0.9,'ETH']]),
columns = ['time','return','coin'],
index = [[datetime.date(2020,5,1), datetime.date(2020,5,2)]])
BTC_df
>>> time return coin
2020-05-01 19:15:00 1.05 BTC
2020-05-02 09:20:00 1.2 BTC
ETH_df
>>> time return coin
2020-05-01 08:30:00 1.1 ETH
2020-05-02 17:30:00 0.9 ETH
我想要的输出如下,使用分层索引(MultiIndex)
merged_df
>>> time return coin
2020-05-01 08:30:00 1.1 ETH
19:15:00 1.05 BTC
2020-05-02 09:20:00 1.2 BTC
17:30:00 0.9 ETH
解决方案
您可以使用pd.concat
它们并对其进行排序df.sort_values
。
df = pd.concat([BTC_df,ETH_df])
df.rename_axis('Date').sort_values(by=['Date','time'])
time return coin
Date
2020-05-01 08:30:00 1.1 ETH
2020-05-01 19:15:00 1.05 BTC
2020-05-02 09:20:00 1.2 BTC
2020-05-02 17:30:00 0.9 ETH
推荐阅读
- javascript - 在应用之前预览 DOM-Element 样式/布局更改
- apache - 关于 apache bench 测试模式的一些困惑
- flutter - FileSystemException:无法打开文件,路径 = 'android/app/build.gradle'
- django - 如何在 Django 中使用 force_update?
- javascript - 使用 Helmet 在 React 中注入 HTML 代码
- email - 我需要在 cypress 中创建自动化测试,它将使用不同的电子邮件注册用户并接受用户电子邮件上的注册消息
- flutter - 已超过未经验证使用的每日限制。继续使用需要注册。与谷歌驱动器一起颤抖
- ubuntu - 无法重置布局 - pgadmin (ubuntu)
- css - 下拉菜单位于 DIV 下
- python - 我可以拟合质心和峰高随机分布的多个高斯谱吗?