假设我有数据框。
另外我有2个列表:
se_bench = []
tu_bench= []
我想创建像:
这样的函数def calculation(row):
if row['var_1'] == #something:
return (se_bench[1]/tu_bench[1])* turnover.iloc[i,]
elif row['var_1'] == #something else:
return (se_bench[2]/tu_bench[2])* turnover.iloc[i,]
df.apply(lambda row: calculation(row),axis = 1)
其中'var_1'和'营业额'是数据框中的变量。
如何在每行中迭代turnover.iloc[i,]
?
我认为,可以通过for循环来实现,但是可以使用apply函数吗?
修改
使用for循环它的工作原理如下:
#Or alternative:
se = []
for i in range(len(df.index)):
if df['var_1'] == #something:
seva.append((se_bench[1]/tu_bench[1])* turnover.iloc[i,])
elif row['var_1'] == #something else:
seva.append((se_bench[1]/tu_bench[1])* turnover.iloc[i,])
else:
seva.append(np.nan)
df['seva'] = pd.Series(seva,index = df.index)
答案 0 :(得分:0)
答案 1 :(得分:0)
def calculation(row):
if row['var_1'] == #something:
return (se_bench[1]/tu_bench[1])* row['turnover']
elif row['var_1'] == #something else:
return (se_bench[2]/tu_bench[2])* row['turnover']
else:
return (np.nan)
df['seva'] = df.apply(calculation, axis = 1)