嵌套 for 循环的替代方案

我有一个 pandas df,其中一些列包含空白值。我有一个嵌套的 for 循环,它通过从列表中提取这些值来填充这些列。给定列的所有行都获得相同的值,这是正确的。这里的顺序很重要,因为col1需要值val1。


import pandas as pd


df = pd.DataFrame({"col1": ["", "", ""],

                     "col2": ["", "", ""],

                     "col3": ["Facebook, Instagram", "Facebook, Facebook", "Twitter"]})


Columns = ['col1', 'col2'] #list of column names that the code should iterate over

Values = ['val1', 'val2'] #list of values to be inserted in the given columns


for n in Columns:

    for i in df:

        df[Columns] = Values

输出:


    col1    col2    col3

0   val1    val2    Facebook, Instagram

1   val1    val2    Facebook, Facebook

2   val1    val2    Twitter

我当前的代码可以工作,但处理大量数据时速度非常慢。我可以做什么来改善它?


千万里不及你
浏览 129回答 2
2回答

DIEA

我认为最简单的是传递变量,例如:df[Columns] = Valuesprint (df)   col1  col2                 col30  val1  val2  Facebook, Instagram1  val1  val2   Facebook, Facebook2  val1  val2              Twitter100k 行的性能:df = pd.DataFrame({"col1": ["", "", ""],                     "col2": ["", "", ""],                     "col3": ["Facebook, Instagram", "Facebook, Facebook", "Twitter"]})Columns = ['col1', 'col2'] #list of column names that the code should iterate overValues = ['val1', 'val2'] #list of values to be inserted in the given columnsdf = pd.concat([df] * 100000, ignore_index=True)%timeit df[Columns] = Values7.53 ms ± 40.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

小唯快跑啊

两个循环(外部循环和内部循环)都是不必要的:n并且i从未使用过,并且您执行相同的操作 n*i 次,因此代码很慢。只需摆脱循环并简单地使用df[Columns] = Values.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python