使用 Apply 根据现有列创建新的数据框列

Using Apply to create a new dataframe columns based on existing columns

def calc():
  return df2['Strike'] + df2['Bid']

df2['new'] = df2.apply(calc)
Error --->
df2['new'] = df2.apply(calc)

ValueError: Wrong number of items passed 21, placement implies 1

apply() 运行s 函数分别用于每个 row(或 column),您应该使用

def calc(row): 
    return row['Strike'] + row['Bid']

df2['new'] = df2.apply(calc, axis=1)  # `axis=1` for `rows`

它得到一个 row 作为参数,它 return 一个 row 作为结果。
在您的代码中,您 return df2 可以一次表示所有 21 行。


但对于您的示例,您可以 运行 它没有 apply

df2['new'] = df2['Strike'] + df2['Bid']

最小工作示例

import pandas as pd

data = {
    'Strike': [1,2,3], 
    'Bid': [4,5,6], 
}

df = pd.DataFrame(data)

# ---

df['new'] = df['Strike'] + df['Bid']

# ---

def calc(row):
    return row['Strike'] + row['Bid']

df['new_apply'] = df.apply(calc, axis=1)  

print(df)

结果:

   Strike  Bid  new  new_apply
0       1    4    5          5
1       2    5    7          7
2       3    6    9          9