【发布时间】:2017-04-25 00:42:18
【问题描述】:
给定这个数据框
df=pd.DataFrame({"A":[0.380,0.475,0.380,0.475,0.570],"B":[20,20,63,63,63]})
A B
0 0.380 20
1 0.475 20
2 0.380 63
3 0.475 63
4 0.570 63
我想添加一个列,该列在给定 A 列的输入的情况下返回函数的结果,但该函数应根据 B 列的内容而有所不同。使用 apply 方法添加基于 A 的列很容易:
def conv(x):
return (33.8*np.sin(1.65*(x-0.89))+33.9)/0.19
df['C']=df['A'].apply(conv)
df
但我想根据 B 列中的条目对 A 应用完全不同的函数。在定义中设置任何“if”语句当然会返回 ValueErrors,使用 df['C'].isin([20]) 会给我一个布尔值列表价值观。接下来我将尝试df.groupby('B') 并对每个组应用不同的功能,但我仍然想知道什么是最优雅的解决方案。
【问题讨论】:
-
告诉我们您希望它如何变化以及您认为结果应该是什么。
标签: python pandas dataframe apply