【发布时间】:2019-02-16 05:29:13
【问题描述】:
我正在尝试为每一行使用不同的列数组将值更新为“True”。我有一个完全错误的数据框:
Place1 Place2 ... PlaceN
Id1 False False ... False
Id2 False False ... False
.
.
.
IdN False False ... False
一个包含每个 ID 的地点列表的系列:
Id1 [Place1, Place2]
Id2 [Place4, Place54, PlaceN]
.
.
.
IdN [Place1]
我需要将DataFrame中Id1的Place1和Place2列中的值更改为True。
目前我有一个使用循环的工作代码
for id, row in df.iterrows():
df.loc[id]=row[series[id]]=True
但是对于超过 60k 个 ID 和 150 个位置来说,它太慢了。我需要它在我阅读新闻文章的时候完成,而不是现在的几个小时。
我尝试过其他方法,例如 apply,但 lambda 函数不允许赋值。
每行都有一系列结构良好的列,感觉应该有一种矢量化的方式来索引列数组。但是我没找到。
提前感谢您的帮助!
【问题讨论】:
-
谢谢。原来我的搜索技巧也需要打磨。感谢您的回复!
标签: python arrays pandas performance indexing