使用Apply基于现有列创建新的数据框架列


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()分别为每个row(或column)运行函数,您应该使用

def calc(row): 
return row['Strike'] + row['Bid']
df2['new'] = df2.apply(calc, axis=1)  # `axis=1` for `rows`

获取一个row作为参数,并返回一个row作为结果。
在您的代码中,您返回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

相关内容

  • 没有找到相关文章

最新更新