我有一个c包含许多不同列的数据框.此外,arr是一个对应于以下子集的数据帧c:arr = c[c['A_D'] == 'A'].
我的代码的主要思想是迭代c-dataframe中的所有行,并搜索arr应该发生某些特定条件的所有可能情况(在数据框中):
c['A_D'] == D和c['Already_linked'] == 0hour在arr数据帧必须小于hour_aux在c数据帧Already_linked的的arr数据框必须是零:arr.Already_linked == 0Terminal和Operator需要相同arr现在,使用布尔索引和groupby get_group存储条件:
arr数据帧以选择相同的运营商和终端:)g = groups.get_group((row.Operator, row.Terminal)c数据框中小时的到达时间以及Already_linked == 0的位置:vb = g[(g.Already_linked==0) & (g.hour<row.hour_aux)]对于c验证所有条件的数据框中的每一行,vb都会创建一个数据框.当然,这个数据帧在每次迭代中都有不同的长度.创建vb数据框后,我的目标是选择vb数据框的索引,以最小化vb.STARTc …
举个例子,我有以下数据帧:
Date Balance
2013-04-01 03:50:00 A
2013-04-01 04:00:00 A
2013-04-01 04:15:00 B
2013-04-01 04:15:00 B
2013-04-01 04:25:00 A
2013-04-01 04:25:00 A
2013-04-01 04:35:00 B
2013-04-01 04:40:00 B
2013-04-02 04:55:00 B
2013-04-02 04:56:00 A
2013-04-02 04:57:00 A
2013-04-03 10:30:00 A
2013-04-03 16:35:00 A
2013-04-03 20:40:00 A
Run Code Online (Sandbox Code Playgroud)
我的目标是添加一个"计数器"列,基本上显示A和B的数量的平衡.因此,每次出现A时,计数器列都会增加一个值.每次出现B时,计数器列都会减少一个值.如果两个连续行中同时出现两个A(相同的日期),则两个行的余额应增加2(同样的推理适用于连续的B或同时适用于A和B).因此,数据框最终会如下所示:
Date Balance Counter
2013-04-01 03:50:00 A 1
2013-04-01 04:00:00 A 2
2013-04-01 04:15:00 B 0
2013-04-01 04:15:00 B 0
2013-04-01 04:25:00 A 2
2013-04-01 04:25:00 A 2
2013-04-01 04:35:00 B 1
2013-04-01 04:40:00 B …Run Code Online (Sandbox Code Playgroud) 例如,我有以下数据框:
Date indicator_1 indicator_2
2013-04-01 03:50:00 x w
2013-04-01 04:00:00 y u
2013-04-01 04:15:00 z v
2013-04-01 04:25:00 x w
2013-04-01 04:25:00 z u
2013-04-01 04:30:00 y u
2013-04-01 04:35:00 y w
2013-04-01 04:40:00 z w
2013-04-01 04:40:00 x u
2013-04-01 04:40:00 y v
2013-04-01 04:50:00 x w
Run Code Online (Sandbox Code Playgroud)
我的目标是使用以下规则创建两列:
第一栏应该告诉我自上次在indicator_1栏上出现“ x”以来的分钟数。
第二列应提供自上次在指标_1上出现对“ y”和在指标_2列上出现“ u”以来的分钟数。
对于具有完全相同的小时且其中一个时间与“ x”(在第一种情况下)或对“ y”,“ u”(在第二种情况下)相对应的行,计算分钟数应针对变量的先前出现进行。因此,所需的输出应类似于:
Date desired_column_1 desired_column_2 indicator_1 indicator_2
2013-04-01 03:50:00 NaN NaN x w
2013-04-01 04:00:00 10.0 NaN y u
2013-04-01 04:15:00 25.0 15.0 z …Run Code Online (Sandbox Code Playgroud)