使用向量参数应用函数

2024-05-06 19:51:47 发布

您现在位置:Python中文网/ 问答频道 /正文

样本DF:

df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
                   'num_wings': [2, 0, 0, 0],
                   'num_specimen_seen': [10, 2, 1, 8]},
                  index=['falcon', 'dog', 'spider', 'fish'])

我有一个向量(pd系列),它的长度等于df中的列数:

x_add = pd.Series([1,2,3])

我想在df的每一列中添加元素方面的x_add(在第一列中添加1,在第二列中添加2等等)。类似于tihs(这些代码不起作用):

def my_sum(series, x):
    y = x + 3 * 5
    z = x - 5 + 8
    series = series + 1 + z + x
    return series
x_vector = [1, 2 ,3]
df.apply(lambda x: my_sum(x, x_vector), axis=1)

如果您可以同时编写一个并行执行apply的解决方案,那就太好了

希望上次编辑

我想使用的实函数:

import pandas as pd
from mlfinlab.features.fracdiff import frac_diff_ffd

df = pd.DataFrame({'col1': [2, 4, 8, 0, 8, 9, 7, 7, 5000, 60000],
                   'col2': [2, 0, 0, 0, 200, 4400, 544560, 2564, 543, 454]})


argument_vector = [1, 2]
df.apply(lambda x: frac_diff_ffd(x, argument_vector))

Tags: lambdaimportadddataframedfmydiffnum
2条回答

使用^{}

df.add(pd.Series([1,2,3]).values)

apply一起:

df.apply(lambda row: row.add(x_add.values), axis=1)

        num_legs  num_wings  num_specimen_seen
falcon         3          4                 13
dog            5          2                  5
spider         9          2                  4
fish           1          2                 11

使用.values​​只要x_add索引不是数据帧的columns就需要

编辑

x_vector = [1, 2 ,3]
df.apply(lambda row: my_sum(row, x_vector), axis=1)

简单地说

>>> df + x_add.values

        num_legs  num_wings  num_specimen_seen
falcon         3          4                 13
dog            5          2                  5
spider         9          2                  4
fish           1          2                 11

对于apply

>>> df.apply(lambda x: x + x_add.values, axis=1)

        num_legs  num_wings  num_specimen_seen
falcon         3          4                 13
dog            5          2                  5
spider         9          2                  4
fish           1          2                 11

根据编辑:

def my_sum(series, x):
    return series + x

my_sum(df.iloc[0], 2)

x_vector = [1, 2 ,3]
df.apply(lambda x: my_sum(x, x_vector), axis=1)

顺便说一句,已经有一个函数可以为您执行此操作:

from operator import add
df.apply(lambda x: add(x, x_vector), axis=1)

相关问题 更多 >