【发布时间】:2019-03-21 06:06:17
【问题描述】:
我必须处理大量数据。每行都以 1 或 0 开头。我需要一个数据框,其中每行都以 1 开头,所以我必须将所有行的值向左移动,直到第一个值为 1。
例如:
0 1 0 0 1 0 0
1 0 0 0 0 1 1
0 0 0 1 0 0 1
0 0 0 0 0 1 1
结果必须是这样的:
1 0 0 1 0 0 0
1 0 0 0 0 1 1
1 0 0 1 0 0 0
1 1 0 0 0 0 0
我不想使用 for、while 等,因为我需要一些更快的 pandas 或 numpy 方法。
你对这个问题有想法吗?
【问题讨论】:
-
你是循环移位还是填充
0? -
@pault 想要标记为骗子?刚刚注意到我的解决方案基本上是那里公认的答案。
-
@user3483203 我不知道 - 这取决于所需的转变是否是循环的,不是吗?
-
@pault 循环移位无关紧要,因为当 1 位于索引 0 中时,您将始终停止,这意味着 1 永远不会回绕。无论哪种方式,另一个答案都没有谈论如何确定偏移量,所以我认为保持打开状态很好
标签: python pandas performance numpy dataframe