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