样本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.Series),其长度等于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))
答案 0 :(得分:3)
简单
>>> 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)
答案 1 :(得分: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)