【发布时间】:2020-05-26 05:44:05
【问题描述】:
我需要在选定的行中使用一些字符串更新 DataFrame 列,为此我有索引。 到目前为止,我设法通过列表理解实现了我所需要的:
[data.particleIDs.values[idx[i]].append(particlenames[i]) for i in range(len(idx))]
其中data.particleIDs 是需要更新的DataFrame 列,particlenames 是一个包含字符串的列表,idx 是一个数组,其中包含每个字符串需要写入的DataFrame 行。几个字符串对应同一行,我需要把它们都写在DataFrame列中。
假设我有一个 DataFrame 和我用来更新它的字符串列表:
data = pd.DataFrame({'particleIDs': [[] for i in range(20)]}
particlenames = ['c15001'+str(i) for i in range(10))]
我有 10 个字符串,我需要使用它们来更新我的 DataFrame 中的行 [7 8 15 8 11 0 15 1 12 8],即我需要将每个字符串添加到相应的行。
FOR 循环非常慢,因为实际的particlenames 列表很长,我需要多次重复此过程。
有什么办法可以加快速度吗?
谢谢!
【问题讨论】:
-
一些输入输出数据可以帮助我们更好地理解您的问题,请提供minimal reproducible example
-
完成!希望它更清楚。
-
那么预期的结果是什么?您正在多次更新同一行(例如,行
8更新了三次,值为“c150011”、“c150013”和“c150019”)。 -
是的,我需要那个!我也尝试使用 .loc,但我无法得到那个结果。
标签: python dataframe for-loop append list-comprehension