【发布时间】:2019-08-26 11:31:51
【问题描述】:
假设数据框具有“A”列和“条件”列,如下面的代码所示。
example = pd.DataFrame({'A': range(10), 'condition': [0,1,0,1,2,0,1,2,2,1]})
如果“B”列中的值是 0 或 2,我想将“A”列中的值乘以 2。所以我尝试了这些:
example['A']=example['A'].apply(lambda x: x*2 \
if example['condition']==0 or example['condition']==2)
example['A']=np.where(example.condition==0 or example.condition==2, \
lambda x: x*2, example.A)
但这些都无法获得如下所需的输出:
output: desired output:
example example
A B A B
0 0 0 0 0 0
1 1 1 1 1 1
2 2 0 2 4 0
3 3 1 3 3 1
4 4 2 4 8 2
5 5 0 5 10 0
6 6 1 6 6 1
7 7 2 7 14 2
8 8 2 8 16 2
9 9 1 9 9 1
如果我得到所需的输出,我想对“条件”进行分组,并在“A”值大于 2.5 时计算“A”值的绝对总和。我有这个想法,但如果我没有从上面得到所需的输出,我不确定它是否有效。
group1=example.groupby([example[condition')['A'].\
agg([ ('A sum' , lambda x : x[x>=2.5].abs(sum()) ])
有什么建议吗?
【问题讨论】:
标签: python-3.x pandas dataframe lambda