使用 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
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