如果下一个日期不存在前一行,如何从按日期索引的数据帧中“复制”前一行。这是由下面的问题引起的。你知道吗
问题
我的例子是
DATE | TEAM | PLAYER
-----+------+-------
0 | A | John
0 | A | Tom
0 | B | Chris
0 | B | Rob
1 | A | John
1 | A | George
1 | B | Chris
2 | A | Rob
我试图在对象X
的基础上进行构建,这样我就可以像
X.loc[date, team]
它将返回所有players
的最后一次观察是team
的date
。你知道吗
现在说清楚,我想
X.loc[0, 'A'] = ['John', 'Tom']
X.loc[0, 'B'] = ['Chris', 'Rob']
X.loc[1, 'A'] = ['John', 'Tom', 'George']
X.loc[1, 'B'] = ['Chris', 'Rob']
X.loc[2, 'A'] = ['John', 'Tom', 'George', 'Rob']
X.loc[2, 'B'] = ['Chris']
想法
我的想法是,我可以为那些在那一天没有被观察到的玩家“填充”以前日期的值,例如data_filled
DATE | TEAM | PLAYER | FILLED
-----+------+--------+-------
0 | A | John | 0
0 | A | Tom | 0
0 | B | Chris | 0
0 | B | Rob | 0
1 | A | John | 0
1 | A | George| 0
1 | B | Chris | 0
1 | A | Tom | 1
1 | B | Rob | 1
2 | A | Rob | 0
2 | A | John | 1
2 | A | George| 1
2 | B | Chris | 1
2 | A | Tom | 1
其中我添加了一个FILLED
列,只是为了表示行是否被添加到了data
。现在我相信我能得到我想要的
X = data_filled.set_index(['DATE', 'TEAM'])
我可以用它
X.loc[data, team]
得到球员名单。你知道吗
您可以定义一个自定义的
loc
函数,而不是构造一个数据帧来使用DataFrame.loc
给定一个日期
n
,我们可以使用以下方法获得所有玩家的最后一个团队:然后我们可以在一个给定的队中挑选队员
根据需要在函数调用中组合上述两个步骤。你知道吗
输出示例:
更高性能的方法是使用pd.合并在给定的日期建立一个球员和他们最近的球队成员表。你知道吗
首先,我们必须建立一个包含所有可能参与者和日期的表格。你知道吗
然后您可以使用
loc
来获取最后一次被观察到为一个团队踢球的球员这种方法将每个球员的最后一个已知团队填充到未来的日期中。我创建中间变量来避免一个大的单行程序。你知道吗
相关问题 更多 >
编程相关推荐