小编Mig*_*lho的帖子

Python - For循环数百万行

我有一个c包含许多不同列的数据框.此外,arr是一个对应于以下子集的数据帧c:arr = c[c['A_D'] == 'A'].

我的代码的主要思想是迭代c-dataframe中的所有行,并搜索arr应该发生某些特定条件的所有可能情况(在数据框中):

  • 只需要迭代行c['A_D'] == Dc['Already_linked'] == 0
  • hourarr数据帧必须小于hour_auxc数据帧
  • Already_linked的的arr数据框必须是零:arr.Already_linked == 0
  • c和数据框中的TerminalOperator需要相同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 …

python performance vectorization python-3.x pandas

17
推荐指数
1
解决办法
3222
查看次数

Python - 200万行表中的计数器

举个例子,我有以下数据帧:

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)

python counter vectorization pandas

5
推荐指数
1
解决办法
117
查看次数

Python Pandas-自上次出现以来在200万行数据框中的分钟

例如,我有以下数据框:

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)

python vectorization dataframe pandas

5
推荐指数
1
解决办法
437
查看次数