[英]Merging dataframes with hierarchcial index?
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
我想要的output如下,使用分层索引(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
您可以使用set_index
和append
来腾出time
:
pd.concat([BTC_df,ETH_df]).set_index('time',append=True).sort_index()
Output:
return coin
time
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.