在 Pandas 中,您可能会遇到需要根据应用于某个函数的自定义函数创建多个新列的情况现有专栏。该任务可能看起来很简单,但由于函数的预期返回类型,可能会出现意想不到的挑战。
最初,您可能会尝试分配使用 df.ix[: ,10:16] = df.textcol.map(extract_text_features) 语法直接连接到 DataFrame 中一系列索引的函数。然而,由于函数的返回类型不兼容,这种方法通常会导致错误。
一个潜在的解决方案是使用 df.iterrows( 迭代 DataFrame 的每一行) )。此方法允许您将函数单独应用于每一行并将结果捕获为元组。然而,这种方法可能比其他选项慢得多。
更高效、更灵活的方法是使用 zip() 函数与 map() 结合使用来创建新的专栏。 zip() 函数将函数的输出组合成一个元组,然后可以将其解压缩到各个列中。例如,以下代码演示了如何使用 zip() 方法创建六个新列:
<code class="python">df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))</code>
Pandas 的最新更新引入了更方便的应用函数的方法到列并创建新列。例如,df.apply() 方法允许您指定输出格式(DataFrame、Series 或列表)并处理其他参数。此外,df.assign() 方法使您能够直接创建新列,而无需显式分配输出。这些较新的方法在基于函数创建多个新列方面提供了更大的灵活性和效率。
以上是如何从 Pandas 中的函数高效创建多个新列?的详细内容。更多信息请关注PHP中文网其他相关文章!