给定如下数据帧:
contractID
Date
1982-09-16 (SPZ1982, 1982-12-16 00:00:00)
1982-09-17 (SPZ1982, 1982-12-16 00:00:00)
1982-09-20 (SPZ1982, 1982-12-16 00:00:00)
...
2018-09-27 (SPZ2018, 2018-12-21 00:00:00)
2018-09-28 (SPZ2018, 2018-12-21 00:00:00)
2018-10-01 (SPZ2018, 2018-12-21 00:00:00)
我有重复的contractID
,我想有效地对这些ID执行一个操作,比如:
def query(df, tup, startDate, endDate):
ID = tup[0]
ExpirationDate = tup[1]
panel = df.loc[ID].loc[ExpirationDate].loc[startDate:endDate]
return panel
df = pd.DataFrame()
print('acquiring daily data...')
for tup in contractUse['contractID'].unique():
panel = query(rawData, tup, startDate, endDate)
if df.empty:
df = panel
else:
df = df.append(panel, verify_integrity=False)
return df
其中contractUse
是上面介绍的数据帧。我只想迭代唯一的值。当我迭代惟一值时,我需要得到该惟一值何时开始的索引值,以及该惟一值何时停止的索引值。然后我将这个startDate
和endDate
的唯一值提供给我的query
函数。在熊猫身上有没有快速的方法?你知道吗
你需要做两件事:
GroupBy
根据列将数据帧分割成块。你知道吗因此,首先拆分
contractID
系列:然后按新创建的
key
序列分组:提取组的“开始和结束”索引现在与提取组并查看其索引一样简单。例如:
相关问题 更多 >
编程相关推荐