【发布时间】:2018-12-06 00:39:20
【问题描述】:
我正在尝试对我的数据框进行分组,然后对数据框的每一行应用一个函数:
df=pd.read_csv('stack.csv')
df['TIME_M']=pd.to_datetime(df['TIME_M'],format='%Y%m%d %H:%M:%S.%f')
df.groupby(['SYM_ROOT',df['TIME_M'].dt.date]).apply(group_increment_to_end)
def group_increment_to_end(x):
return x.iloc[0:1]
SYM_ROOT 是一个类别变量,而TIME_M 是一个日期时间变量。
但是,我不断收到以下错误:
ValueError: Key 2017-01-03 00:00:00 not in level Index([2017-01-03], dtype='object', name=u'TIME_M')
您知道问题的原因是什么吗?是因为 iloc 不能应用于具有多个索引的函数吗?如果我想遍历行并使用group_increment_to_end 函数添加行,如果我不能使用 iloc 函数,我应该怎么做?
更新:
数据集可以下载here。
| SYM_ROOT | TIME_M | BEST_BID | BEST_ASK | increment | genjud_incre |
|----------|----------------------------|----------|----------|-----------|--------------|
| A | 2017-01-03 09:30:00.004712 | 45.91 | 46.12 | 0 | 4680 |
| AA | 2017-01-03 09:30:00.004014 | 28.55 | 28.57 | 0 | 4680 |
【问题讨论】:
-
你能添加一些数据样本吗?
-
@jezrael 我添加了数据的链接。它只包含两行,一个非常简单的数据集。
-
@jezrael 我还附上了数据集的文本版本。
-
好像是bug :(
-
@JinhuaWang 您正在尝试按 df['TIME_M'].dt.date 分组,即'2017-01-03 00:00:00',它无法分组,这就是错误的原因。试试这个,它会工作 df.groupby(['SYM_ROOT',df['TIME_M']]).apply(group_increment_to_end)
标签: python python-2.7 pandas pandas-groupby