我已经下载了两个数据框,我想将它们连在一起(我不是程序员)。 我使用的是Python 2.7。
我的代码是这样的:
from pandas_datareader.data import Options
import datetime
import pandas as pd
pd.set_option('display.width',280) # default is 80
aapl = Options('aapl', 'yahoo')
expiry = datetime.date(2017, 1, 1)
data_CALL = aapl.get_call_data(expiry=expiry)
data_PUT = aapl.get_put_data(expiry=expiry)
#The first DataFrame
Q1=data_CALL.iloc[0:5, 0:8]
print(Q1.head())
#The Second DataFrame
Q2=data_PUT.iloc[0:5:, 0:8]
print(Q2.head())
#I got this DataFrame
concat=pd.concat([Q1,Q2])
print(concat)
答案 0 :(得分:0)
您的结果看起来像是使用groupby
对象的结果。即您已按strike
将数据分组为分组属性。
这样做,您需要删除每个数据帧的复合索引;从它的外观来看,你的索引为(Strik, Expiry, Type, Symbol)
。
我只能假设这是在get_call_data
和get_put_data
函数中设置的,因为它们直接返回数据帧。我建议你导入
此时,原始数据帧没有设置任何索引;这样strike
将保留为您可以轻松用作分组属性的列,如下所示。
实际上分组非常简单:
combined = pd.concat([Q1, Q2])
grouped = combined.groupby('strike') # single grouping attribute
验证结果:
for name, group in grouped:
print name
print group
操纵数据(这里只是几个例子):
# 1. using groupby builtin functions
first_group = grouped.first() # you can do last()
first_strike = grouped.get_group('115') # return you a dataframe as given by you
# 2. using list
group_list = list(grouped)
first_group = group_list[0] # return a tuple with 2 elements: name and DataFrame
first_strike_name = group_list[0][0]
first_strike_data = group_list[0][1]
您可以阅读有关Python GroupBy here的更多信息。
答案 1 :(得分:0)