在 Pandas 中,您可能会遇到需要根据应用于某个函数的自定义函数创建多个新列的情况现有专栏。该任务可能看起来很简单,但由于函数的预期返回类型,可能会出现意想不到的挑战。
最初,您可能会尝试分配使用 df.ix[: ,10:16] = df.textcol.map(extract_text_features) 语法直接连接到 DataFrame 中一系列索引的函数。然而,由于函数的返回类型不兼容,这种方法通常会导致错误。
一个潜在的解决方案是使用 df.iterrows( 迭代 DataFrame 的每一行) )。此方法允许您将函数单独应用于每一行并将结果捕获为元组。然而,这种方法可能比其他选项慢得多。
更高效、更灵活的方法是结合使用 zip() 函数和 map() 来创建新的专栏。 zip() 函数将函数的输出组合成一个元组,然后可以将其解压缩到各个列中。例如,以下代码演示了如何使用 zip() 方法创建六个新列:
df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))
Pandas 的最新更新引入了更方便的方法来将函数应用于列和创建新列。例如,df.apply() 方法允许您指定输出格式(DataFrame、Series 或列表)并处理其他参数。此外,df.assign() 方法使您能够直接创建新列,而无需显式分配输出。这些较新的方法在基于函数创建多个新列方面提供了更大的灵活性和效率。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3