【发布时间】:2021-07-27 05:37:56
【问题描述】:
我正在尝试迭代一个大列表,以便我可以更新数据框中的一些值。然而,结果是它太慢了,使得这段代码在生产环境中无法使用。我尝试了很多替代方案,但无法找到解决问题的好方法。
初始代码示例:
df = pd.DataFrame({"A": [1], "B": [2], "C": [3]})
list = ["D", "E", "F"]
for x in list:
if x not in df:
df[x] = 0
print(df)
{"A": 1, "B": 2, "C": 3, "D": 0, "E": 0, "F": 0}
我的性能测试显示列表中大约 3k 项的总时间为几秒钟。知道如何加快速度吗?
编辑:
我从循环遍历列表切换到直接向 df 添加新列。现在我正在创建我要添加的列的有序字典。然后我把它变成 df2 并附加到 df.我不会将其标记为完成,因为我确信还有更快的方法。
更新代码示例:
dict = {}
for x in list:
if x not in df:
dict[x] = 0
df2 = pd.DataFrame(dict, index=[0])
df = df.append(df2)
【问题讨论】:
-
您能否编辑问题并将样本(小)输入数据和预期输出放在那里?
-
好吧,怎么样?
-
df = pd.DataFrame({"A": 1, "B": 2, "C": 3})抛出错误。这是正确的代码吗? -
不,这只是示例代码。我无法发布我的实际代码,它使用 excel 文件和大量字符串作为其数据源。
-
你能制作出working最小的例子吗?该示例不必包含原始数据,而是我们可以粘贴和使用的数据。
标签: python pandas list dataframe for-loop