【发布时间】:2016-05-19 04:28:06
【问题描述】:
我最近问了一个问题 - How do I add conditionally to a selection of cells in a pandas dataframe column when the the column is a series of lists?,但我相信有一个我以前没有考虑过的新问题。
在以下数据框中,我需要两个条件来更改列 d。 d 列中的每个值都是list。
- 其中
a == b,d 中的最后一个整数加一。 -
其中
a != b,整数列表被扩展,值1被插入到d列中list的末尾。a b c d On On [0] [0,3] On Off [0] [0,1] On On [0] [2] On On [0] [0,4,4] On Off [0] [0] -
因此,数据框会是这样的:
a b c d On On [0] [0,4] On Off [0] [0,1,1] On On [0] [3] On On [0] [0,4,5] On Off [0] [0,1]
我意识到这可以使用 pd.Series.apply 方法结合预定义函数或使用 lambda 来完成,但是数据框由 100000 行组成,我希望这两个条件的矢量化解决方案可能存在。
【问题讨论】:
-
将非标量值存储为数据元素是不明智的做法,通常您会失去对矢量化方法的访问权限,因为 np 和 pandas 没有用于以矢量化方式附加到列表的矢量化方法
-
我感觉可能是这样。作为 pandas 的新用户,捕获这些数据的更典型方法是什么?数据框每次大约有 50 万次更新,在 col
a和 colb中产生不同的结果。如果a == b则计数增加,如果a != b需要开始新计数。
标签: python pandas conditional-statements vectorization