【发布时间】:2020-01-22 19:46:42
【问题描述】:
我有一个 obj eps,它是一个 list,在该对象中有一堆列名:[col1, col2, col3, ...]。我还有一个 DataFrame,其中有一列名为 features。在该列中,您将找到包含数字的list:[1,4,5,13,17,20, ...]。我想要做的是使用apply() 方法来确定行值关联到哪一列(在eps 中)。所以,row['features'] = [1,3,4,6]; eps[1] = col2。因此col2 = True,否则如果features中的数字与eps中的任何列都没有关联,col_n = False。
有没有一种简单的方法可以使用 pandas 的 apply 方法来做到这一点?
这是一些伪代码:
feats= []
for row in df["features"]:
for i in range(len(eps)):
if i in row:
feats.append(True)
else:
feats.append(False)
这可行,但速度很慢,我知道.apply() 会大大加快速度。我已经切换到.iterrows(),但仍然不够好。请帮忙!
df['features'] 中的前 4 个元素可能是:
[1,4,6,12,45,67]
[3,6,7,8,10,39,57,64,65]
[2,9,10,11,57,58,60,71,75]
[1,4,10,76,584]
【问题讨论】:
-
你读过熊猫文档吗?你能分享一个你的数据示例吗,minimal reproducible example?任务的描述可能还需要一些工作,我不完全确定我理解它。
-
为了更清楚,我编辑了这个问题。希望它有所帮助。
标签: python-3.x pandas apply