Pandas DataFrame将功能应用于多列并输出多列

qxzsilver

我一直在寻找SO的最佳方式来应用一个函数,该函数采用多个单独的Pan​​das DataFrame列并在同一DataFrame中输出多个新列。假设我有以下几点:

def apply_func_to_df(df):
    df[['new_A', 'new_B']] = df.apply(lambda x: transform_func(x['A'], x['B'], x['C']), axis=1)

def transform_func(value_A, value_B, value_C):
    # do some processing and transformation and stuff
    return new_value_A, new_value_B

我正在尝试将如上所述的功能应用于整个DataFrame df,以便输出2个NEW列。但是,这可以推广到一个用例/函数,该用例/函数接受nDataFrame列并将m新列输出到同一DataFrame。

以下是我一直在关注的事情(取得不同程度的成功):

  • 为函数调用创建一个Pandas系列,然后附加到现有的DataFrame中,
  • 压缩输出列(但在我当前的实现中会发生一些问题)
  • 重新编写的基本功能transform_func,以明确预期行(即字段)ABC如下所示,然后做一个适用于DF:

def transform_func_mod(df_row):
    # do something with df_row['A'], df_row['B'], df_row['C]
    return new_value_A, new_value_B

我希望以一种非常通用的Python方式来完成此任务,同时兼顾性能(包括内存和时间)。我对此表示感谢,因为由于对熊猫不熟悉,我一直在为此苦苦挣扎。

Valdi_Bo

通过以下方式编写您的transform_func

  • 它应该有一个参数-当前行,
  • 该函数可以读取当前行中的各个列并加以利用,
  • 返回的对象应该是具有以下内容的系列
    • 值-无论您要返回什么,
    • index-目标列名称。

示例:假设所有3列均为字符串类型,将AB连接起来,则将“ some string”添加到C

def transform_func(row):
    a = row.A; b = row.B; c = row.C;
    return pd.Series([ a + b, c + '_xx'], index=['new_A', 'new_B'])

获取新值,请将此函数应用于每一行:

df.apply(transform_func, axis=1)

请注意,生成的DataFrame保留了原始行的键(我们稍后将使用此功能)。

或者,如果要将这些新列添加到DataFrame中,请将df与上述应用程序的结果连接起来,然后将连接结果保存在原始df下

df = df.join(df.apply(transform_func, axis=1))

编辑截至03:36:34Z的评论

使用zip可能是最慢的选择。基于行的功能应该更快,并且结构更直观。最快的方法可能是为每列分别编写2个向量化表达式。在这种情况下,类似:

df['new_A'] = df.A + df.B
df['new_B'] = df.C + '_xx'

但是通常的问题是基于行的函数是否可以表示为矢量化表达式(如上所述)。在“负”情况下,您可以应用基于行的函数。

要比较每个解决方案的速度,请使用%timeit

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Pandas DataFrame将功能应用于多列并输出多列

来自分类Dev

pandas groupby将相同的功能应用于多列

来自分类Dev

如何将函数应用于多列以在 Pandas 中创建多列?

来自分类Dev

pandas DataFrame,如何将功能应用于特定列?

来自分类Dev

Pandas groupby汇总将多个功能应用于多个列

来自分类Dev

按列将函数应用于Pandas数据框

来自分类Dev

按列将函数应用于Pandas数据框

来自分类Dev

使用 Args 将函数应用于多个 Pandas 列

来自分类Dev

Pandas:将函数应用于行,写入新列

来自分类Dev

Pandas Dataframe Groupby 多列

来自分类Dev

熊猫将功能应用于多列多行

来自分类Dev

Python Pandas Groupby变换/应用对多列进行操作的功能

来自分类Dev

在python / pandas的多列中应用相似的功能

来自分类Dev

Pandas数据框基于其他列值将功能应用于列字符串

来自分类Dev

Pandas,DataFrame:将一列拆分为多列

来自分类Dev

将pandas DataFrame中的列转换为多列

来自分类Dev

Pandas,DataFrame:将一列拆分为多列

来自分类Dev

Pandas DataFrame将多列值堆叠到单列中

来自分类Dev

将Pandas Dataframe中的列表拆分为多列

来自分类Dev

Pandas Groupby Multiindex用于多列

来自分类Dev

Python Pandas将功能应用于分组数据框

来自分类Dev

使用 Pandas 应用函数更新多列

来自分类Dev

Python 和 Pandas:按多列应用

来自分类Dev

按年份分组并将功能应用于另一列-Python,Pandas

来自分类Dev

Pandas DataFrame:如何创建多列索引

来自分类Dev

将置换矩阵应用于pandas DataFrame

来自分类Dev

将for循环应用于Pandas中的多个DataFrame

来自分类Dev

如何将函数(BigramCollocationFinder)应用于Pandas DataFrame

来自分类Dev

将解析函数应用于Pandas DataFrame

Related 相关文章

热门标签

归档